【问题标题】:vba Macro doesn't wait until workbook finishes downloading from SAPvba 宏不会等到工作簿从 SAP 完成下载
【发布时间】: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 自动打开工作簿也会起作用吗?

标签: excel vba sap-gui


【解决方案1】:

Application.Wait (Now + TimeValue("0:00:10"))

将其添加到打开您的 Excel 的代码上方。估计等待时间。因此,如果需要 30 秒,请将 10 更改为 30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多