Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
pauloandre
Creator II
Creator II

Leitura de xls protegido por senha

Prezados,

na construção do script preciso ler arquivo xls protegido por senha, porem ao ler o arquivo em 'Dados de Arquivo/Arquivos de Tabela' é apresentada seguinte mensagem: 'O arquivo Excel não pode ser lido porque está encriptado'.

gastaria de saber se existe uma possibilidade de ler esse arquivo xls.

Paulo André

6 Replies
fosuzuki
Partner - Specialist III
Partner - Specialist III

Paulo,

Interessante que hoje fiz um teste com arquivo XLSX e o QV consegue ler os dados pela opção de Arquivo de Tabela. Então uma opção talvez mais simples é migrar o arquivo para formato XLSX.

Se vc não puder migrar o formato do arquivo, será necessário criar uma conexão ODBC e usar macro para criar uma instância do Excel. Há um tempo atrás descobri isso aqui na comunidade, mas não lembro mais a thread para dar os créditos. Segue QVW e XLS de exemplo em anexo. A senha de proteção do XLS é "qv".

Alguns pontos importantes:

- no módulo de macro, selecionar System Access

- no painel inferior da tela de script, selecionar a aba Settings e marcar a opção 'Can Execute external programs'.

pauloandre
Creator II
Creator II
Author

Fernando,

o xls enviado possui segurança apenas pra alteração correto? no meu caso existe proteção para abrir o arquivo.

Paulo

fosuzuki
Partner - Specialist III
Partner - Specialist III

Na macro, o codigo VBS para abrir o XLS tem que incluir a senha:

myExcelWorker.Workbooks.Open sFileName,,,,"SenhaDoExcel"

Descobri isso agora. Legal!

Not applicable

Fernando, como faço para abrir um xlsx com senha na abertura do arquivo?

fosuzuki
Partner - Specialist III
Partner - Specialist III

fpedrassani, tudo o q eu sei está aí em cima... acho q o QV por padrão não conseguirá abrir o seu arquivo, e aí acho q vc terá q recorrer ao esquema com a macro.

Not applicable

Certo Fernando,

inseri aquela linha com a senha no final, e o arquivo continua sem ler o xlsx, inclusive não consigo nem  carregá-lo via Arquivos de Tabela. Segue abaixo a macro:

public myExcelWorker

function OpenXLS(sFileName)

          ' Create an Excel instance

          Set myExcelWorker = CreateObject("Excel.Application")

 

          ' Disable Excel UI elements

          myExcelWorker.DisplayAlerts = False

          myExcelWorker.AskToUpdateLinks = False

          myExcelWorker.AlertBeforeOverwriting = False

 

          myExcelWorker.Workbooks.Open(sFileName),,,, 66264

end function

function CloseXLS()

          myExcelWorker.ActiveWorkBook.Close False

 

          myExcelWorker.Quit

          set myExcelWorker = Nothing

end function

se coloco a senha dentro de aspas duplas acusa erro na linha "myExcelWorker.ActiveWorkBook.Close False"