我试图运行一个宏,我卡住了,:
- 运行脚本,将SAP中的数据保存到桌面的excel文件(file.xlsx)中
- 然后复制该数据并将其粘贴到另一个工作簿(file2.xlsm)的现有工作表上
问题是file.xlsx保持打开状态,我无法关闭
Sub atualizarretornos()
Set SapGuiAuto = GetObject("SAPGUI")
Set objGui = SapGuiAuto.GetScriptingEngine
Set objConn = objGui.Children(0)
Set session = objConn.Children(0)
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/n"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/okcd").Text = "vl06o"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/btnBUTTON6").press
session.findById("wnd[0]").sendVKey 17
session.findById("wnd[1]").sendVKey 8
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[0]").sendVKey 43
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "retornos pendentes.xlsx"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 23
session.findById("wnd[1]/tbar[0]/btn[11]").press
Application.ScreenUpdating = False
Dim wbkretorno As Variant
wbkretorno = "C:Userslopesa04Desktopretornos pendentes.xlsx"
Workbooks.Open wbkretorno
Set wbkretorno = ActiveWorkbook
wbkretorno.Worksheets(1).Range("A:P").Copy
With ThisWorkbook.Sheets("retornos pendentes")
.Range("A:P").PasteSpecial Paste:=xlPasteValues
End With
ActiveWorkbook.Save
ActiveWorkbook.Close
Sheets("Sheet1").Activate
Application.ScreenUpdating = True
End Sub
感谢粘贴数据后,初始工作簿关闭。
ActiveWorkbook不是固定的,当您使用
打开工作簿时,它会根据程序中的操作而更改。Workbooks.Open wbkretorno
Set wbkretorno = ActiveWorkbook
"C: 用户桌面 lopesa04 retornos pendentes.xlsx"变为ActiveWorkbook,但稍后当您这样做时:
With ThisWorkbook.Sheets("retornos pendentes")
.Range("A:P").PasteSpecial Paste:=xlPasteValues
End With
thisworkbook(带有宏的那个)变成ActiveWorkbook。
所以当你做
ActiveWorkbook.Save
ActiveWorkbook.Close
它指向带有宏的工作簿,而不是带有SAP数据的工作簿。如果你想关闭有SAP数据的那个,你应该按照@zen的建议做:
wbkretorno.Save
wbkretorno.Close
编辑-在你最后一次评论后尝试改变这一点,不要为2个不同的东西使用相同的变量,名称和工作簿对象
Dim wbkretorno As Variant
wbkretorno = "C:Userslopesa04Desktopretornos pendentes.xlsx"
Workbooks.Open wbkretorno
Set wbkretorno = ActiveWorkbook
Dim wbkretorno As Workbook
Workbooks.Open "C:Userslopesa04Desktopretornos pendentes.xlsx"
Set wbkretorno = ActiveWorkbook
Saludos
我试着放在前面:
wbkretorno。保存wbkretorno。关闭
但是工作簿wbkretorno = "C:Userslopesa04Desktop rernos pendens .xlsx",只是坚持打开。
我认为这与宏的时间有关,它运行得太快了。如果我用F8键逐行运行宏,它会做它应该做的。