Olá a todos
Será que alguem poderia me ajudar?
veja o seguinte exemplo:
x:="Carta Teste.txt"
if ! file(x)
arq:=fcreate(x)
endif
Execute File "Winword" parameters x
o Word diz que nao consegue carregar o arquivo "cartas.doc",
apesar do arquivo estar gravado como CARTA TESTE.TXT
Agradeço qualquer ajuda.
Poka
ajuda com nome longo de arquivo
Moderador: Moderadores
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Tche, não entendi bem seu post, mas me diz uma coisa vc quer abrir um WORD ? se é isso de uma olhada no link abaixo:
https://pctoledo.org/forum/viewtopic.php?t=6760
E abaixo o que eu acho que vc prescissa:
https://pctoledo.org/forum/viewtopic.php?t=6760
E abaixo o que eu acho que vc prescissa:
Código: Selecionar todos
*************************
PROCEDURE Abre_word(cARQ)
*************************
LOCAL oWord,oText
RenameFile( cARQ, "TEMP.DOC" ) //remomeio o WORD
cARQ="TEMP.DOC"
TRY
oWord := GetActiveObject( "Word.Application" )
CATCH
TRY
oWord := CreateObject( "Word.Application" )
CATCH
MsgStop("Não foi Possivel Achar o Word Instalado","Aviso do Sistema")
RETURN
END
END
IF !FILE(cARQ)
MsgStop("Não Foi Localizar e Abrir o Documento de Word")
RETURN
ENDIF
oWord:Documents:Open(cARQ) //ABRE O WORD
oWord:Visible := .T. //PARA VISUALIZAR OU NÃO ANTES
oWord:WindowState := 1
oWord:PrintOut() //PARA IMPRIMIR DIRETO
RETURNLeonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Sygecom, obrigado por responder.
A finalidade é para um sistema médico, onde tenho um arquivo com cartas padrao.
Esse arquivo contem os campos, codigo, descricao da carta e um campo memo texto.
Até hoje, essas cartas estao em campo memo, agora estou passando para xharbour/minigui e queria fzer o seguinte.
Arquivo carta com campos codigo e descricao. Exemplo de descricao da carta, "DIETA PARA ACIDO URICO". O medico seleciona a carta desejada, eu queria fazer o seguinte.
xarq:="c:\sim\cartapad\"+cartas->descricao+".txt"
, e com o comando EXECUTE FILE "WINWORD" PARAMETERS xarq o sistema me leva diretamente para dentro do texto e já no diretorio da carta padrão. Era o que eu queria, faz tempo.
Funciona perfeito, mas somente com nome ate 8 cartacteres. Achei que no xharbour não teria esse problema. Mas a ideia de renomear o arquivo, para um nome curto dá certo tambem. Vou fazer assim mesmo. O ideal seria com o nome longo para quando estiver no texto, aparecer o nome correto da carta.
Se tiver alguma solução, agradeço. A rotina acima que voce me passou, não consegui implementar, dá que o Word nao está instalado.Talvez essa rotina aceitasse nome longo.
Um abraço
Poka
A finalidade é para um sistema médico, onde tenho um arquivo com cartas padrao.
Esse arquivo contem os campos, codigo, descricao da carta e um campo memo texto.
Até hoje, essas cartas estao em campo memo, agora estou passando para xharbour/minigui e queria fzer o seguinte.
Arquivo carta com campos codigo e descricao. Exemplo de descricao da carta, "DIETA PARA ACIDO URICO". O medico seleciona a carta desejada, eu queria fazer o seguinte.
xarq:="c:\sim\cartapad\"+cartas->descricao+".txt"
, e com o comando EXECUTE FILE "WINWORD" PARAMETERS xarq o sistema me leva diretamente para dentro do texto e já no diretorio da carta padrão. Era o que eu queria, faz tempo.
Funciona perfeito, mas somente com nome ate 8 cartacteres. Achei que no xharbour não teria esse problema. Mas a ideia de renomear o arquivo, para um nome curto dá certo tambem. Vou fazer assim mesmo. O ideal seria com o nome longo para quando estiver no texto, aparecer o nome correto da carta.
Se tiver alguma solução, agradeço. A rotina acima que voce me passou, não consegui implementar, dá que o Word nao está instalado.Talvez essa rotina aceitasse nome longo.
Um abraço
Poka
A rotina de acesso OLE funciona beleza com arquivos de nome longo, talves não tenha encontrado seu Word por motivo de versão (como o Rochinha disse no tópico citado)
Eu prefiro utilizar objeto por ele te dar maior controle sobre a aplicação
Porem utilizando a função abaixo você consegue carregar o arquivo.
Importante: note que o parametro '"Carta Teste.txt"' está com envolvido por aspas duplas dentro da string, sem isso ele não irá reconhecer o nome longo.
Abraços
Eu prefiro utilizar objeto por ele te dar maior controle sobre a aplicação
Porem utilizando a função abaixo você consegue carregar o arquivo.
Código: Selecionar todos
Executa('C:\Arquivos de programas\Microsoft Office\Office\WINWORD.EXE','"Carta Teste.txt"')
function Executa(cExec,cParam,lWait)
local hIN, hOUT, hERR
local hProc, nLen
Local nRet
default(@cParam,'')
default(@lWait,.f.)
if file(cEXEC)
hProc := hb_openprocess( cExec+' '+cParam , @hIN, @hOUT, @hERR )
if lWait
nRet := hb_processvalue( hProc )
endif
fclose( hProc )
fclose( hIN )
fclose( hOUT )
fclose( hERR )
else
wait('Arquivo "'+cExec+'" não encontrado')
endif
return nRet
Abraços
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE

