SAP GUI Scripting com Excel VBA – automatize processos

Escrito por Adriano Pataro · 23/10/2026

SAP GUI Scripting com Excel VBA é um processo de integração entre SAP e Excel, onde é possível otimizar tarefas e ganhar tempo. Se você já trabalha com o SAP, sabe que algumas tarefas repetitivas podem consumir tempo e energia.

Nesse artigo, vou mostrar como gravar um script no SAP, pegar o código gerado e adaptá-lo no Excel VBA, além de substituir valores inseridos no SAP pelas referências de células no Excel.

Nota: este passo a passo funciona no SAP GUI for Windows, instalado no computador. Não funciona no SAP acessado pelo navegador.

Muita gente procura esse assunto como “SAP Script”. Mas o SAPscript é outra ferramenta do SAP, usada para criar formulários de impressão. O que permite gravar e automatizar as telas do SAP é o SAP GUI Scripting, assunto deste artigo.

O que é o SAP GUI Scripting

O SAP GUI Scripting permite que você grave ações realizadas dentro do SAP e automatize essas tarefas repetitivas. Com o Excel VBA, você pode usar os dados do Excel diretamente no SAP, tornando o processo ainda mais eficiente.

Continue a leitura para aprender:

  • Como ativar o SAP GUI Scripting;
  • Gravar e salvar o script;
  • Usar o Excel com VBA para automatizar o processo.

Ativando o gravador de Scripting

Esta é a configuração mínima para gravar. A configuração completa do SAP GUI e do Excel está no artigo Configurar Excel VBA e SAP GUI para automatizar tarefas.

Antes de iniciar, verifique se o gravador de script está ativado. Para isso, siga estes passos:

  • Clique no ícone Ajustar Layout Local → Opções.
Gravação de Script SAP GUI
  • Do lado esquerdo clique em Acessibilidade & scripting;
  • Depois clique em Scripting;
  • Marque a caixa de seleção Ativar scripting e clique em OK.
Habilitar script SAP GUI

Gravando o script no SAP

O primeiro passo é gravar as ações que você realiza no SAP para que elas possam ser automatizadas. Vamos ver como gravar um script usando o gravador do SAP.

Vou usar como exemplo uma operação na transação ME2J. Vamos entrar na transação, inserir alguns dados e depois gerar um relatório. Veja o passo a passo.

  • Clique no ícone Ajustar Layout Local → Registro e reprodução de script.
Registro e reprodução de script
Se a opção Registro e reprodução de script estiver esmaecida, isso indica que o script foi desabilitado para usuários neste servidor pela sua organização. Nesse caso, você precisará entrar em contato com seu administrador de TI para habilitar o script para você.
  • Clique nos 3 pontos para escolher o local e o nome da sua macro.
  • Digite Script1 para o nome do arquivo e mantenha a extensão .vbs no final.
SAP GUI Scripting com Excel VBA - gravar
  • Clique no ícone Registrar script.
  • Entre na transação ME2J com /n (/nME2J ).
Observação: digite a transação no campo de comando, não dê duplo clique na transação na barra de favoritos.
  • Insira as informações como você faz manualmente.
  • Vou inserir dados fictícios, mas você deve inserir dados que usa nas operações no dia a dia.
  • Em seguida, clique no botão Executar (F8) para gerar o relatório.
  • Após finalizar as ações, pare a gravação, clicando no botão Encerrar registro.
  • O código será exportado em um arquivo .vbs.

Código gerado pelo SAP GUI Scripting

Vá até o local que você configurou para salvar o script, clique com o botão direito do mouse sobre o arquivo e escolha Abrir com → Bloco de notas. Este é o código que foi gravado:

If Not IsObject(Application) Then
    Set SapGuiAuto = GetObject("SAPGUI")
    Set Application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
    Set Connection = Application.Children(0)
End If
If Not IsObject(Session) Then
    Set Session = Connection.Children(0)
End If
If IsObject(WScript) Then
    WScript.ConnectObject Session, "on"
    WScript.ConnectObject Application, "on"
End If

Session.findById("wnd[0]").maximize
Session.findById("wnd[0]/tbar[0]/okcd").Text = "/nME2J"
Session.findById("wnd[0]").sendVKey 0
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = "100000000001"
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").SetFocus
Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 12
Session.findById("wnd[0]/usr/ctxtLISTU").Text = "BEST"
Session.findById("wnd[0]/usr/ctxtLISTU").SetFocus
Session.findById("wnd[0]/usr/ctxtLISTU").caretPosition = 4
Session.findById("wnd[0]/tbar[1]/btn[8]").press

O código que começa em If Not IsObject(application) Then e vai até End If, é o trecho que localiza o SAP GUI aberto e escolhe a primeira conexão e a primeira janela. Se você tiver mais de uma janela do SAP aberta, o script vai agir na primeira, que nem sempre é a que está na sua frente.

Conexão, janela e os demais objetos do SAP GUI são explicados em detalhes no artigo Modelo de objeto do SAP GUI Scripting.

Após isso, temos as linhas que foram gravadas de acordo com as ações.

session.findById("wnd[0]/tbar[0]/okcd").text = "/nME2J" 'insere a transação no SAP.
session.findById("wnd[0]").sendVKey 0 'mesmo que pressionar a tecla Enter.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").text = "100000000001" 'insere o valor 100000000001 no SAP.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").setFocus 'foco em um controle.
session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").caretPosition = 12 'posição do cursor.

Observação: estas 2 últimas linhas não são necessárias para que o código funcione. Veja mais sobre elas em Métodos e Propriedades dos Objetos SAP GUI Scripting.

session.findById("wnd[0]/usr/ctxtLISTU").text = "BEST" 'insere o valor BEST no SAP.
session.findById("wnd[0]/tbar[1]/btn[8]").press 'gera o relatório.

Importando o código gerado para o Excel VBA

Agora que você gravou o script, o próximo passo é integrá-lo ao Excel VBA.

  • Inicie um arquivo Excel e pressione Alt + F11 para abrir o editor de VBA.
  • Crie um módulo (Inserir → Módulo).
  • Digite Sub TesteSAP(), copie o código do script gerado pelo SAP e cole abaixo do texto digitado.

Conflito com o objeto Application do Excel

Se você colar o script gravado diretamente no editor do VBA e executar, a macro para com o erro de compilação Uso inválido da propriedade.

O motivo: no VBA do Excel, Application já representa o próprio Excel. O script gravado pelo SAP usa uma variável com esse mesmo nome para guardar o SAP GUI. No VBA, esse nome continua apontando para o Excel.

Para corrigir, troque Application por outro nome, como SapApp. Aproveitei a correção para simplificar o início do código:

  • As variáveis passam a ser declaradas com Dim … As Object;
  • Os testes If Not IsObject saem, porque no VBA as variáveis são criadas do zero a cada execução da macro;
  • O bloco WScript sai, porque ele só tem função quando o script roda fora do Excel, com duplo clique no arquivo .vbs;
  • As linhas setFocus e caretPosition saem, porque não mudam o resultado.
Sub TesteSAP()
    Dim SapGuiAuto As Object
    Dim SapApp As Object
    Dim Connection As Object
    Dim Session As Object

    ' Pega o SAP GUI aberto, a primeira conexão e a primeira janela (sessão)
    Set SapGuiAuto = GetObject("SAPGUI")
    Set SapApp = SapGuiAuto.GetScriptingEngine
    Set Connection = SapApp.Children(0)
    Set Session = Connection.Children(0)
    
    Session.findById("wnd[0]").maximize
    Session.findById("wnd[0]/tbar[0]/okcd").Text = "/nME2J"
    Session.findById("wnd[0]").sendVKey 0
    Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = "100000000001"
    Session.findById("wnd[0]/usr/ctxtLISTU").Text = "BEST"
    Session.findById("wnd[0]/tbar[1]/btn[8]").press
End Sub

Substituindo valores por referências de células no Excel

Um dos maiores benefícios de usar o SAP GUI Scripting com Excel VBA é a possibilidade de substituir os valores estáticos por referências de células no Excel. Isso permite automatizar a inserção de dados personalizados, diretamente do Excel.

Veja um exemplo de planilha criada para inserção dos dados no SAP:

Planilha de excel para dados no SAP

Agora troque os valores digitados pelas células da planilha. Repare que a célula C3 guarda só o código da transação (ME2J). O /n fica no código, na frente do valor da célula, para a macro funcionar a partir de qualquer tela.

Sub TesteSAP()
    Dim SapGuiAuto As Object
    Dim SapApp As Object
    Dim Connection As Object
    Dim Session As Object

    ' Pega o SAP GUI aberto, a primeira conexão e a primeira janela (sessão)
    Set SapGuiAuto = GetObject("SAPGUI")
    Set SapApp = SapGuiAuto.GetScriptingEngine
    Set Connection = SapApp.Children(0)
    Set Session = Connection.Children(0)

    Session.findById("wnd[0]").maximize
    Session.findById("wnd[0]/tbar[0]/okcd").Text = "/n" & Range("C3").Value
    Session.findById("wnd[0]").sendVKey 0
    Session.findById("wnd[0]/usr/ctxtCN_NETNR-LOW").Text = Range("C4").Value
    Session.findById("wnd[0]/usr/ctxtLISTU").Text = Range("C5").Value
    Session.findById("wnd[0]/tbar[1]/btn[8]").press
End Sub

Executando a macro pelo Excel

Antes de executar, confira três pontos:

  • O SAP está aberto e com login feito: se houver mais de uma janela do SAP aberta, a macro vai agir na primeira, como vimos acima.
  • O arquivo está salvo como Pasta de Trabalho Habilitada para Macro do Excel (*.xlsm): no formato .xlsx, o Excel descarta o código ao salvar.
  • A planilha com os dados está na tela: o código lê as células C3, C4 e C5 da planilha que estiver ativa.

Para executar:

  1. No Excel, pressione Alt + F8, selecione TesteSAP e clique em Executar. No editor do VBA, você também pode clicar dentro da macro e pressionar F5.
  2. O SAP GUI exibe o aviso “Um script está tentando acessar o SAP GUI”. Clique em OK para confirmar.
  3. O SAP abre a transação ME2J, preenche os campos com os valores da planilha e gera o relatório.

O aviso aparece cada vez que uma macro se conecta ao SAP. É uma proteção do SAP GUI, e recomendamos mantê-la ativa.A preparação do Excel e as opções de segurança do scripting estão explicadas no artigo Configurar Excel VBA e SAP GUI para automatizar tarefas.

Exemplos de automação

Escolher variante pelo código VBA

Acesso aos menus, submenus e itens pelo código VBA

Retornar informações da barra de status pelo código VBA

Conclusão SAP GUI Scripting

Automatizar processos com SAP GUI Scripting e Excel VBA é uma poderosa forma de economizar tempo, especialmente quando você lida com grandes volumes de dados.

O gravador de scripts do SAP facilita a captura das ações, e com o Excel VBA, você pode dinamizar essas ações substituindo valores fixos por referências de células, otimizando ainda mais os processos.

Com esses passos, você será capaz de transformar tarefas repetitivas em automações ágeis e confiáveis, utilizando o melhor das ferramentas que o SAP GUI Scripting com Excel VBA oferece.

Este foi um primeiro exemplo simples, para você saber que é possível automatizar este processo de inserção de dados no SAP. Continue acompanhando para aprender sobre outros comandos, controles do SAP, loop com VBA e muito mais.

Participe

O que achou do SAP GUI Scripting com Excel VBA? Deixe sua opinião nos comentários.

Se este conteúdo foi relevante para você, convide seus amigos para que eles também fiquem sabendo deste material.

Precisa desta automação na sua empresa? Entre em contato e vamos conversar.

Um abraço e até a próxima.

Gostou deste artigo?

Receba mais conteúdos como este direto no seu email.

Adriano Pataro

Meu nome é Adriano Pataro, sou certificado pela Microsoft como Excel Specialist e autor do livro Dominando o Excel 2019. Graduando ciência de dados, trabalho como analista de dados e uso o Excel há mais de 15 anos. Em 2005 resolvi trazer meu conhecimento para a internet e compartilhar com você aqui no meu site e nas redes sociais.

Artigos Relacionados

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Page [tcb_pagination_current_page] of [tcb_pagination_total_pages]

>

Damos valor à sua privacidade

Nós e os nossos parceiros armazenamos ou acedemos a informações dos dispositivos, tais como cookies, e processamos dados pessoais, tais como identificadores exclusivos e informações padrão enviadas pelos dispositivos, para as finalidades descritas abaixo. Poderá clicar para consentir o processamento por nossa parte e pela parte dos nossos parceiros para tais finalidades. Em alternativa, poderá clicar para recusar o consentimento, ou aceder a informações mais pormenorizadas e alterar as suas preferências antes de dar consentimento. As suas preferências serão aplicadas apenas a este website.

Cookies estritamente necessários

Estes cookies são necessários para que o website funcione e não podem ser desligados nos nossos sistemas. Normalmente, eles só são configurados em resposta a ações levadas a cabo por si e que correspondem a uma solicitação de serviços, tais como definir as suas preferências de privacidade, iniciar sessão ou preencher formulários. Pode configurar o seu navegador para bloquear ou alertá-lo(a) sobre esses cookies, mas algumas partes do website não funcionarão. Estes cookies não armazenam qualquer informação pessoal identificável.

Cookies de desempenho

Estes cookies permitem-nos contar visitas e fontes de tráfego, para que possamos medir e melhorar o desempenho do nosso website. Eles ajudam-nos a saber quais são as páginas mais e menos populares e a ver como os visitantes se movimentam pelo website. Todas as informações recolhidas por estes cookies são agregadas e, por conseguinte, anónimas. Se não permitir estes cookies, não saberemos quando visitou o nosso site.

Cookies de funcionalidade

Estes cookies permitem que o site forneça uma funcionalidade e personalização melhoradas. Podem ser estabelecidos por nós ou por fornecedores externos cujos serviços adicionámos às nossas páginas. Se não permitir estes cookies algumas destas funcionalidades, ou mesmo todas, podem não atuar corretamente.

Cookies de publicidade

Estes cookies podem ser estabelecidos através do nosso site pelos nossos parceiros de publicidade. Podem ser usados por essas empresas para construir um perfil sobre os seus interesses e mostrar-lhe anúncios relevantes em outros websites. Eles não armazenam diretamente informações pessoais, mas são baseados na identificação exclusiva do seu navegador e dispositivo de internet. Se não permitir estes cookies, terá menos publicidade direcionada.

Visite as nossas páginas de Políticas de privacidade e Termos e condições.

O site utiliza cookies para melhorar sua experiência de navegação.
Success message!
Warning message!
Error message!