Vba 调用工作簿上的宏与它断断续续';s函数

Vba 调用工作簿上的宏与它断断续续';s函数,vba,excel,Vba,Excel,我有一个宏,用于打开其他工作簿并刷新这些工作簿中的内容。除了其中一个之外,所有这些工作都是间歇性的,我的意思是,大多数情况下,它完全按照要求工作,但随机会出现一个错误,说明无法找到宏。到目前为止,我还没有找到一个点,我可以精确地指出它在哪里做这件事,所以很难调试 代码如下: Call Shell("K:\ASA_Reporting\Audits\MDA\ListCompletedAudits.bat") ' This wait has been added to allow the comma

我有一个宏,用于打开其他工作簿并刷新这些工作簿中的内容。除了其中一个之外,所有这些工作都是间歇性的,我的意思是,大多数情况下,它完全按照要求工作,但随机会出现一个错误,说明无法找到宏。到目前为止,我还没有找到一个点,我可以精确地指出它在哪里做这件事,所以很难调试

代码如下:

Call Shell("K:\ASA_Reporting\Audits\MDA\ListCompletedAudits.bat")

' This wait has been added to allow the command to run in Console
Application.Wait (Now() + TimeValue("00:00:10"))

ThisWorkbook.Worksheets("Bits n Pieces").Range("G14").Value = "True"

Dim wb1 As Workbook

'This is to update the 5S Audit Dashboard
Set wb1 = Workbooks.Open("K:\ASA_Reporting\Audits\Audit Dashboard v002.xlsb", True, False, , , "password")

Application.Run "'Audit Dashboard v002.xlsb'!Refresh5S"

wb1.Close savechanges:=True

Stop
注释部分“这是更新5S审计仪表板”的要点是出现问题的代码。上述关于等待10秒的部分旨在纠正与5S无关的其他问题

我知道宏是正确的,因为它在5S工作簿上工作,并且大多数情况下它都是通过我的更新程序工作的,但正如我所说的,有时is会出现一个错误,说明宏不存在

我已经检查了被调用的代码(如下所示),但是我不能检查其中的任何错误

Sub Refresh5S()
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim datasheet As Worksheet
Set datasheet = ThisWorkbook.Worksheets("Data Sheet")

Dim wb As Workbook
Dim ws As Worksheet
Set wb=Workbooks.Open("\\bosch.com\dfsrb\dfsuk\loc\wo\dept\service\ASA_Reporting\Audits
\5S Audit Master v2.xlsx", True, True)
Set ws = wb.Worksheets("Counts")

datasheet.Range("W6:Z21").Value = ws.Range("B5:E20").Value
datasheet.Range("AB6:AC400").Value = ws.Range("H5:I399").Value
datasheet.Range("AD6:AG400").Value = ws.Range("K5:N399").Value
datasheet.Range("AH6:AH400").Value = ws.Range("O5:O399").Value

wb.Close False

MsgBox "Thank you for your patience." & vbNewLine & vbNewLine & "The figures 
should update in a few seconds.", vbInformation
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
我想我已经在Microsoft帮助页面上找到了答案,标题是“工作簿.Open命令后Excel中的宏停止”,但这是在按下shift键时找到的,在本例中没有,而是留在设备上。

有人知道为什么它随机决定5S工作簿中的宏不存在吗

编辑: 尝试了以下方法,一天都没有问题,但今天问题又出现了,错误如下:


代码没有改变,除了下面的建议,这些建议有效了一天

由于Office的最新更新现在已经解决了此问题,因此问题最终出现在Excel中。

由于Office的最新更新现在已经解决了此问题,因此问题最终出现在Excel中。

在应用程序之前尝试执行
操作。Ready=True:DoEvents:Loop
应用程序之前运行“'Audit Dashboard v002.xlsb'!Refresh5S”
以确保在运行宏之前已完成工作簿的加载。除了@Peh建议外,我还将检查工作簿是否已打开(例如:
如果不是IsEmpty(wb1),则为
。此外,由于您已经限定了工作簿对象,因此可以使用它来获取工作簿名称(即
Application.run)“&wb1.Name&”!Refresh5S“
)。除其他外,它有助于避免文件名中的任何拼写错误。只是更新发现该问题似乎只在Windows 10和Excel 2016中发生。在旧版本中似乎不会发生。请在应用程序运行之前尝试执行
Do-Until.Ready=True:DoEvents:Loop
before
Application.Run“'Audit Dashboard v002.xlsb'!Refresh5S”
以确保在运行宏之前已完成工作簿的加载。除了@Peh建议外,我还将检查工作簿是否已打开(例如:
If Not IsEmpty(wb1)然后
。此外,由于您已经限定了工作簿对象,因此可以使用该对象获取工作簿名称(即
Application.Run“'&wb1.name&”!Refresh5S“
)。除其他外,它有助于避免文件名中的任何拼写错误。只是更新发现,该问题似乎只发生在Windows 10和Excel 2016上。旧版本似乎不会发生。