Tempo aproximado para leitura: 00:02:00 min
Dúvida
Existe uma função do Advpl que possa selecionar documentos do tipo word nas pastas abaixo do server, ou seja, subpastas de Protheus_data
Ambiente
Cross Segmentos - Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80
Solução
Temos função CGETFILE para obter o caminho do arquivo e utilizar as funções:(CpyS2T, MemoWrite, OLE_OPENFILE)
#Include 'Protheus.ch'
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"
User Function fPegaArq()
Local cArqAux := ""
Private oWord
cArqAux := cGetFile( "Arquivo Texto | *.*",; //Máscara
"Arquivo...",; //Título
,; //Número da máscara
,; //Diretório Inicial
.T.,; //.F. == Abrir; .T. == Salvar
GETF_LOCALHARD,; //Diretório full. Ex.: 'C:\TOTVS\arquivo.docx'
.F.) //Não exibe diretório do servidor
//Caso o arquivo não exista ou estiver em branco ou não for a extensão docx
If Empty(cArqAux) .Or. !File(cArqAux) .Or. (SubStr(cArqAux, RAt('.', cArqAux)+1, 3) != "dot" .And. SubStr(cArqAux, RAt('.', cArqAux)+1, 3) != "docx")
Alert("Arquivo inválido!" - "Atenção")
//Senão, define abra arquivo
Else
OpenWord(@oWord,cArqAux)
EndIf
Return
Static Function OpenWord(oWord,cFile)
Local nVarWord := 0
OLE_CloseFile(oWord)
OLE_CloseLink(oWord)
// Inicializa o Ole com o MS-Word 97 ( 8.0 )
oWord := OLE_CreateLink('TMsOleWord97')
OLE_OpenFile(oWord, cFile)
Return(.T.)
0 Comentários