【发布时间】:2023-03-28 19:58:01
【问题描述】:
我想创建一个需要取出 3 个不同报告的脚本。需要将报告中的信息复制到运行脚本的主文件“Workingfile.xlsm”中的特定工作表中。第 2 次报告基于从第 1 次报告中提取的数据,第 3 次报告基于从第 2 次报告中提取的日期。
以下是第一次尝试保存为 export.xlsx 并打开文件的第一个报告。
在此之后执行的步骤需要是:
- 删除主文件“Workingfile.xlsm”中特定工作表“EKKO”中的所有先前数据
- 将新数据从导出文件复制到主文件“Workingfile.xlsm”中的特定工作表“EKKO”
- 关闭导出文件
- 复制特定工作表“EKKO”中的 B 列。
脚本似乎停留在这一行:y.Sheets("EKKO").Range("A1").PasteSpecial
Sub Button1_Click()
If Not IsObject(SAPGuiApp) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPGuiApp = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = SAPGuiApp.Children(0)
End If
If Not IsObject(SAP_session) Then
Set SAP_session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject SAP_session, "on"
WScript.ConnectObject SAPGuiApp, "on"
End If
SAP_session.findById("wnd[0]").maximize
SAP_session.findById("wnd[0]/tbar[0]/okcd").Text = "/nze16n"
SAP_session.findById("wnd[0]").sendVKey 0
SAP_session.findById("wnd[0]/usr/ctxtS_TABLE-LOW").Text = "EKKO"
SAP_session.findById("wnd[0]/usr/ctxtS_TABLE-LOW").caretPosition = 4
SAP_session.findById("wnd[0]/usr/btnGO").press
SAP_session.findById("wnd[1]/tbar[0]/btn[0]").press
SAP_session.findById("wnd[0]/tbar[1]/btn[17]").press
SAP_session.findById("wnd[1]/usr/txtV-LOW").Text = "CV_TEST"
SAP_session.findById("wnd[1]/usr/txtENAME-LOW").Text = ""
SAP_session.findById("wnd[1]/usr/txtENAME-LOW").SetFocus
SAP_session.findById("wnd[1]/usr/txtENAME-LOW").caretPosition = 0
SAP_session.findById("wnd[1]/tbar[0]/btn[8]").press
SAP_session.findById("wnd[0]/tbar[1]/btn[8]").press
SAP_session.findById("wnd[0]/tbar[1]/btn[46]").press
SAP_session.findById("wnd[0]/tbar[1]/btn[43]").press
SAP_session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Users\admu\Documents\SAP\SAP GUI"
SAP_session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "export.xslx"
SAP_session.findById("wnd[1]/tbar[0]/btn[11]").press
End Sub
----------------------------------------------------------------------------
Sub CopyFromExportFile()
Dim x As Workbook
Dim y As Workbook
Set x = Workbooks("export.xlsx")
Set y = Workbooks("Workfile.xlsm")
x.Sheets("Sheet1").Range("A1").Copy
y.Sheets("EKKO").Range("A1").ClearContents
y.Sheets("EKKO").Range("A1").PasteSpecial
x.Close
y.Sheets("EKKO").Columns(2).Copy
End Sub
【问题讨论】:
-
Stack Overflow 不是为您编写代码的论坛。你必须说出你尝试了什么,是什么阻止你这样做,并提出一个准确的问题。有关详细信息,请参阅help。
-
对不起。问题已更新。
-
好的,这与
PasteSpecial差不多,但是“似乎卡住了”究竟是什么意思,即发生了什么? -
看来我的步骤顺序错误...在清除之前复制。此停用的 Copy 部分因此无法执行 PasteSpecial。
-
现在你可能认为这是一个非常奇怪的问题......当我尝试运行整个脚本时,只有第一个 Sub 被执行。它不执行 Sub CopyFromExportFile() ?