Oracle Forms lendo dados em planilha excel protegida senha.

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
taylormoraes
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Qua, 09 Jun 2010 5:57 pm
Localização: Novo Hamburgo-RS

Olá.
Busquei nos outros tópicos sobre como o Forms ler informações numa planilha excel.
Beleza!
Porem, a planilha que precisarei buscar as informações, é uma planilha protegida por senha.
Aquele tipo de proteção do "save as" do Excel, que precisa colocar a senha para visualizar as informações e outra senha para edição.

alguém tem alguma dica?

O código que usei para abrir e ler o excel é este abaixo, porem antes de abrir o arquivo e ler as informações, o excel pede para digitar manualmente a senha, porem quero automatizar isso!

Selecionar tudo

declare
   appid            pls_integer;
   docid            pls_integer;
   conv_established boolean := false;
   v_nm_destino     varchar2(32000);
   v_ds_classe      varchar2(32000);
   v_ds_local       varchar2(32000);
   v_nm_arquivo     varchar2(32000);
   v_nm_diretorio   varchar2(32000);
   v_nr_linha       number;
   v_nr_coluna      number;
   v_ds_dado        varchar2(32000);
   -- para abrir o arquivo --
begin
   v_nm_destino     := 'C:\TESTE.XLS';
   conv_established := false;
/*
   v_ds_classe      := win_api_environment.read_registry('HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.xls'
                                                        ,null
                                                        ,false);
   v_ds_local       := win_api_environment.read_registry('HKEY_CLASSES_ROOT\' || v_ds_classe || '\shell\open\command'
                                                        ,null
                                                        ,false);
*/
   appid := dde.app_begin(nvl(v_ds_local,'C:\Arquivos de programas\Microsoft Office\OFFICE11\EXCEL.EXE')
                         ,dde.app_mode_minimized);
   docid := dde.initiate('EXCEL'
                        ,'SYSTEM');
   conv_established := true;
   dde.execute(docid
              ,'[Open("' || v_nm_destino || '")]'
              ,10000);
   docid := dde.initiate('EXCEL'
                        ,v_nm_destino);
   -- para ler o dado -- se o excel for em ingles, ao invez de L usa-se R(row)
   dde.request(docid
              ,replace('L2C3'
                      ,' ')
              ,v_ds_dado
              ,dde.cf_text
              ,100000);
   --
   :BLOCO1.CODIGO := trim(replace(replace(V_DS_DADO,chr(13)),chr(10)) );
   -- fecha o excel e o arquivo
   dde.terminate(docid);
   dde.app_end(appid);
end;



Obrigado desde já por toda e qualquer ajuda!!!

Taylor Moraes
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Oi, rodei e não consegui ler os dados. Falta alguma coisa?
Eu precisava ler cada coluna e jogar para uma tabela.
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Sáb, 18 Nov 2006 11:51 am
Localização: Rio de Janeiro - RJ

David,

Como você está usando WIN_API (solução na estação de trabalho) o negócio é conhecer bem o que o Excel pode fazer.

Dá uma conferida se a versão do Excel que vai usar suporta esta solução:

1. Configurar uma macro para ser executada automaticamente na abertura de uma pasta de trabalho

https://support.office.com/pt-br/articl ... omatically

2. Com isto você vai executar uma macro que abre a tal planilha que possui senha

https://www.youtube.com/watch?v=e_iKNNmK-_k

3. Quem sabe com isto você complementa a macro que abre a tal planilha que possui senha e ela também sempre cria uma outra planilha sem senha com os mesmos dados, e aí você poderá ler sem problema.

Não é a melhor solução, mas acredito que abra uma luz sobre o seu problema.

Abs, Renato Viana
Renato Menezes Viana
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 128
Registrado em: Sáb, 18 Nov 2006 11:51 am
Localização: Rio de Janeiro - RJ

Então David, o tópico abaixo também comenta sobre dde.request

http://glufke.net/oracle/viewtopic.php?t=9928

Abs
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes