¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Solução para desativar a janela pop-up de OLE no SAP e Excel

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 99 Vistas
0
Cargando...

Olá a todos,

Sou bastante novo em scripting SAP, mas tenho alguma experiência com VBA. Estou enfrentando um problema ao tentar automatizar um processo no SAP para minha posição atual. Estou gravando uma série de procedimentos, colando o código em uma planilha de macros e fazendo o Excel ler o código VBS com os seguintes comandos:

    Dim SapGuiAuto As Object
Dim Application As Object
Dim Connection As Object
Dim Session As Object

Set SapGuiAuto = GetObject("SAPGUI")
Set Application = SapGuiAuto.GetScriptingEngine
Set Connection = Application.Children(0)
Set Session = Connection.Children(0)
    
  

Tudo está funcionando bem, mas em uma parte, o SAP realiza muitos cálculos que levam alguns minutos e, aproximadamente na metade, o Excel gera a mensagem:

Então, tenho que clicar em OK para continuar, o que é irritante porque continua aparecendo e tenho que fazer isso cerca de 10-15 vezes para alcançar o objetivo, o que anula a automação. Quando faço isso sem uma macro, o SAP não me dá nenhum erro. Tentei desativá-lo com

Application.DisplayAlerts = False, mas não funcionou, em vez disso, me deu:

Pesquisei na internet e no site, mas encontrei pouca informação útil, talvez porque minha pergunta seja muito específica. Alguns detalhes adicionais:

1. Meu laptop é do trabalho e não posso instalar nenhum software adicional ou atualizações sem permissão, então, por favor, forneça soluções alternativas se você estava pensando nisso.

2. Tentei verificar a opção de Excel para DDE, mas recebo um erro ao tentar executar o script:

3. Excel é 2013, SAP - ABAP.

Então, alguém pode me ajudar a alcançar uma das três soluções que pensei?

1. Desativar a janela pop-up de OLE.

2. Clicar automaticamente em OK sempre que aparecer.

3. Fazer o Excel congelar e aguardar enquanto o SAP faz seu trabalho? (não sei se isso faz sentido...) - Aliás, tentei com Application.Wait, mas sem sucesso.

Realmente espero que alguém possa me ajudar aqui,

Obrigado antecipadamente,

Mihail

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

4 Respuestas

0
Cargando...

Olá Mihail,

"Application" é uma palavra protegida no VBA. Em vez disso, você poderia usar o seguinte:

Set SapGuiAuto = GetObject("SAPGUI")  'Obter o objeto de scripting da GUI do SAP
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Obter a GUI do SAP atualmente em execução
Set SAPCon = SAPApp.Children(0) 'Obter o primeiro sistema que está atualmente conectado
Set session = SAPCon.Children(0) 'Obter a primeira sessão (janela) nessa conexão
...

Saudações,

ScriptMan

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

Se estiver convertendo o script gravado para VBA, é melhor omitir completamente as primeiras 14 linhas e usar as que recomendei acima. Claro, adicione as linhas restantes do script gravado a ele.

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

Olá ScriptMan,

Obrigado pela sugestão, no entanto não consigo remover a declaração de Application. Quando colo o código do script gravado, a palavra Application está incorporada dentro do código:

If Not IsObject(Application) Then Set SapGuiAuto = GetObject("SAPGUI") Set Application = SapGuiAuto.GetScriptingEngine

Devo mudar algo mais nesse código?

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?