Página 1 de 1
ajuda com nome longo de arquivo
Enviado: 15 Jan 2008 20:01
por Poka
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
Enviado: 15 Jan 2008 20:42
por sygecom
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:
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
RETURN
Enviado: 18 Jan 2008 14:12
por Poka
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
Enviado: 18 Jan 2008 15:27
por Luiz
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.
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
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
Enviado: 18 Jan 2008 19:43
por Poka
Luiz, voce falou em aspas duplas?. Então testei assim:
NOMEARQ:="C:\CARTAS\DIETA PARA ACIDO URICO"
EXECUTE FILE "WINWORD" PARAMETERS ´"&NOMEARQ"´
Funcionou beleza.
Valeu
Um abraço
Poka