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