【发布时间】:2021-03-25 04:02:33
【问题描述】:
我有一个宏,可以从基于 SAP ABAP 的软件下载报告,它会自动打开,然后开始处理所述 Excel 文件。
问题是文件有点重,需要几秒钟才能打开,所以我需要代码等到文件打开。
编辑:我更新了代码,但仍然有同样的问题:
Sub WorkbookHandling()
Do While wbZus Is Nothing
On Error Resume Next
Set wbZus = Workbooks("MacroToolBoxDummy.xlsx")
Set wsZus = wbZus.Worksheets(1)
DoEvents
On Error GoTo 0
Loop
On Error Resume Next
wsZus.Rows(1).Delete Shift:=xlShiftUp
wsZus.Columns("A").RemoveDuplicates Columns:=1
On Error GoTo 0
wsZus.Columns("A:A").Select
Selection.Copy
我怎样才能给 Excel 几秒钟的时间来打开?或者我可以使用什么样的条件使代码在它为真之前不会继续?
谢谢!!
【问题讨论】:
-
如果您需要的工作簿未打开,
Set wbZus = Workbooks(Workbooks.Count)将引用现有的最后打开的工作簿...在以下循环中不会更改任何内容。试试Set wbZus = Workbooks.Open("abc.xlsx full path")。 Excel 自然会等到工作簿打开,你可以做你需要做的事情。 -
SAP 工作簿是在与您的宏相同的 Excel 实例中打开,还是在新的 Excel 实例中打开?
-
如果我理解得很好,我认为告诉人们您的 Excel 宏运行脚本(SAP GUI 脚本)以自动执行 SAP 软件屏幕上的用户操作很重要,最后一个自动用户操作是异步创建和打开 Excel 文件。
-
我认为代码行为和工作簿来源(来自 SAP)之间没有任何联系。您的代码错误(设置必要的工作簿,例如最后一个,然后等待 Excel 更改它......)。你试过我上面的建议了吗?
-
@FaneDuru 即使 SAP 自动打开工作簿也会起作用吗?