Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Fechar planilha secundária

Dúvidas gerais sobre Excel
n0thing
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Qui Abr 26, 2018 9:16 pm

Fechar planilha secundária

Mensagem por n0thing »

Pessoal, primeiramente boa tarde!

Estou vinculando excel com o sistema SAP, e inserindo uma rotina em um botão na planilha que uso.
A rotina é a seguinte:
Acessa o SAP;
Entra na transação X;
Configura o layout e inclui todas as informações que preciso no relatório;
Exporta pra excel e salva na area de trabalho com o nome y;

Até ai tudo bem, entretando inclui a rotina de capturar os dados desta planilha exportada do SAP para a minha base; Consigo fazer toda essa rotina, porém quero que a planilha gerada pelo SAP feche após os dados serem capturados para minha base.

Na rotina já existe isso, porém pelo que entendi, quando a planilha é exportada pelo SAP ela fica aberta e na rotina que copiei de um projeto, ela obriga a "reabri-lo", e com isso acontece a divergência de informações.

Segue o código
Desde já agradeço a colaboração de todos

Código: Selecionar todos


Sub gerar_relatorio()

Set SapGuiAuto = GetObject("SAPGUI")          
Set SAPApp = SapGuiAuto.GetScriptingEngine    
Set SAPCon = SAPApp.Children(0)               
Set session = SAPCon.Children(0)              

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nzsdr004"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").Text = "YGA1"
session.findById("wnd[0]/usr/ctxtS_FKDAT-LOW").Text = "20.05.2018"
session.findById("wnd[0]/usr/ctxtS_FKDAT-HIGH").Text = "31.12.2018"
session.findById("wnd[0]/usr/ctxtS_WERKS-LOW").Text = "0101"
session.findById("wnd[0]/usr/ctxtS_WERKS-LOW").SetFocus
session.findById("wnd[0]/usr/ctxtS_WERKS-LOW").caretPosition = 4
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").setCurrentCell -1, "ESCRITORIO_VENDAS"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectColumn "ESCRITORIO_VENDAS"
session.findById("wnd[0]/tbar[1]/btn[29]").press
session.findById("wnd[1]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/btn%_%%DYN001_%_APP_%-VALU_PUSH").press
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpNOSV").Select
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpNOSV/ssubSCREEN_HEADER:SAPLALDB:3030/tblSAPLALDBSINGLE_E/ctxtRSCSEL_255-SLOW_E[1,0]").Text = "GC-CSP São Paulo CN"
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpNOSV/ssubSCREEN_HEADER:SAPLALDB:3030/tblSAPLALDBSINGLE_E/ctxtRSCSEL_255-SLOW_E[1,0]").caretPosition = 20
session.findById("wnd[2]/tbar[0]/btn[8]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").setCurrentCell -1, "TIPO_OV"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectColumn "TIPO_OV"
session.findById("wnd[0]/tbar[1]/btn[29]").press
session.findById("wnd[1]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/ctxt%%DYN002-LOW").SetFocus
session.findById("wnd[1]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/ctxt%%DYN002-LOW").caretPosition = 0
session.findById("wnd[1]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/btn%_%%DYN002_%_APP_%-VALU_PUSH").press
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpNOSV").Select
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpNOSV/ssubSCREEN_HEADER:SAPLALDB:3030/tblSAPLALDBSINGLE_E/ctxtRSCSEL_255-SLOW_E[1,0]").Text = "YBVC"
session.findById("wnd[2]/usr/tabsTAB_STRIP/tabpNOSV/ssubSCREEN_HEADER:SAPLALDB:3030/tblSAPLALDBSINGLE_E/ctxtRSCSEL_255-SLOW_E[1,0]").caretPosition = 4
session.findById("wnd[2]/tbar[0]/btn[8]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Users\a914005\Desktop"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "projeto.XLSX"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 12
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[11]").press

Dim wsOrigem As Worksheet

Dim wsDestino As Worksheet

Workbooks.Open Filename:="C:\Users\a914005\Desktop\projeto.XLSX"

Set wsOrigem = Workbooks("projeto.XLSX").Worksheets("Sheet1")

Set wsDestino = Workbooks("Acompanhamento.xlsm").Worksheets("Realizado")

With wsOrigem

wsOrigem.Range("A2:cB2000").Copy
wsDestino.Range("b2").PasteSpecial xlValues
Application.CutCopyMode = False

Workbooks("projeto.XLSX").Close SaveChanges:=True

End With

MsgBox "Importação de Dados Concluída"

End Sub




Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


iasantos
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sáb Nov 04, 2017 11:47 am

Re: Fechar planilha secundária

Mensagem por iasantos »

Trabalho com esse tipo de script e nunca tive esse erro,apesar que eu copio a Sheets inteira para a minha base sem salvar na no export


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Fechar planilha secundária

Mensagem por Reinaldo »

Experimente fechar os arquivos antes; algo +/- assim:

Código: Selecionar todos

.....
Dim wsOrigem As Worksheet
Dim wsDestino As Worksheet
Dim tt as String

tt = ThisWorkbook.Name

For Each ws In Workbooks
    If ws.Name <> tt Then
    Workbooks(ws.Name).Close
    End If
Next

Workbooks.Open Filename:="C:\Users\a914005\Desktop\projeto.XLSX"
......


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder