Avalados por :

Como integrar Excel e SAP através de VBA para importação de arquivos - Problema de foco na janela SAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 17 Vistas
0
Loading...

Olá, sou novo aqui.

Alguém pode me ajudar com a conexão entre Excel e SAP através do VBA? Preciso de ajuda para focar em outra janela enquanto um script é processado. É a janela do SAP. É o SAP ARP - transação CO02 - alteração de ordem - adicionando um anexo. Estou na etapa final onde aparece uma pequena janela de importação e só preciso inserir ou procurar o caminho do arquivo que desejo adicionar. É uma espécie de janela da Microsoft - à esquerda há grandes botões com desktop, documentos e mais 2-3. Mas é chamado de Importar no canto superior esquerdo. Quero usar o comando sendkeys - o caminho será sempre o mesmo, por exemplo, C:\Arquivo\xxx.pdf. Então, pensei que seria muito fácil simplesmente chamar o macro gravado no SAP até que a janela apareça, depois enviar o caminho "C:\Arquivo\xxx.pdf" e depois continuar com o macro do SAP para confirmar e salvar - fim.

O problema é que quando a janela aparece e envio as teclas, não escreve nada na caixa de caminho. Quando executo o macro até que a janela apareça e digito algo no teclado, escreve normalmente na caixa.

Alguém pode me ajudar, por favor, com isso? Tentei uma aplicação "focar" ("microsoft") prompt (as aspas são porque não lembro a frase exata, não tenho aqui o Excel e o arquivo com o macro ou SAP). Não ajuda... talvez porque não é uma janela do Windows, mas uma janela do SAP.

Windows 7, Office 2007, computador de trabalho - então não tenho acesso a todas as funções do sistema operacional, mas acho que não importa.

Se alguém puder me dizer como o prompt é chamado no SAP, então será fácil: Algo como: findbyID.......importwindow.input.text = o caminho do arquivo...

:

Muito obrigado pelas suas respostas.

Mirek

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Loading...

Não tenho certeza se funcionará com o Excel 2007, mas já tentei essa abordagem no Excel 2010. Não funcionou para mim. Uma vez que a caixa de diálogo de importação é aberta, o script para de funcionar. Usar um temporizador para chamar outro sub no mesmo módulo para appactivate e sendkey só funcionará se a caixa de diálogo aberta inicialmente pelo primeiro sub for fechada e aberta manualmente novamente. Bem, isso ou o VBE gera um erro porque a janela não é encontrada, dependendo de como você codifica.

Por qualquer razão técnica, seja no SAPGUI, Windows ou Excel, a única maneira de fazer isso é executar os sub-processos a partir de duas instâncias de processo diferentes, com o primeiro script chamando o segundo script antes de chamar a caixa de diálogo. Você pode usar VBA em dois arquivos Excel diferentes, VBA e VBS, VBS e outro VBS ou duas instâncias de processo de script das linguagens de script que preferir.

Acredito que o Scriptman usou 4 VBS diferentes para fazer isso: um para chamar a caixa de diálogo, dois para aguardar 0.1 seg e 1 seg, e outro para appactivate e sendkeys.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Nota:

Estou brincando com isso novamente. Agora entendo que talvez seja necessário executar uma macro para

session.findById("wnd[0]/shellcont/shell").selectContextMenuItem "PCATTA_CREA"

e depois finalizar a macro original e executar outra com

AppActivate "Importar arquivo"

SendKeys "HEJ", True

Funciona.

Agora eu preciso: executar a macro - até que o arquivo de importação apareça - definir algum tipo de temporizador - 1 segundo para executar outro sub por um segundo, finalizar a macro original... e então iniciar o segundo sub... Sei que está escrito de forma confusa, mas é basicamente o que o Scriptman fez há 3 anos naquele tópico, certo?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Olá, obrigado pela sua resposta.
Pelo que li, é possível, mas usando um segundo arquivo vbs criado... Não tenho experiência na criação de arquivos vbs, mas vou aprender.

No entanto, simplesmente não entendo por que deve ser feito através de 2 scripts, por que não poderiam ser combinados? Provavelmente porque o comando appactivate "Import file" simplesmente não foca? Se conhecemos o nome da janela, deveríamos selecioná-la, e quando estiver aberta, o cursor está onde precisamos que esteja, então simplesmente escrevemos... mas nada.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Prezado Mirek,

É sabido que a janela de diálogo de importação pode interromper o processo de script tanto para VBA quanto para VBS até receber uma entrada, seja manualmente ou através de "sendkeys" enviados de um script de chamada diferente.

Este assunto foi discutido em detalhes com algumas opções de solução aqui: http://scn.sap.com/thread/3448546 e aqui: http://scn.sap.com/thread/1799453

Obrigado,

Sayuti

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?