被调用的工作簿上的macros与它的function间歇性

我所拥有的是一个macros,旨在打开其他工作簿并刷新这些工作簿中的内容。 所有这些工作,除了其中一个是间歇性的,由于我的意思是大多数时候它的工作是完全按照要求,但随机会提出一个错误,说明macros无法find。 到目前为止,我还没有find一个能够确定这一点的地方,所以很难debugging。

下面是代码:

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无关的另一个问题。

我知道macros是正确的,因为它在5S工作簿上工作,并且它通过我的更新程序工作了大多数时间,但是正如我之前所说的,有时会引发错误,指出macros不存在。

我已经检查了被调用的代码(如下所示),但我不能在这个任何错误。

 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 

我以为我已经find了一个微软的帮助页面上的答案,标题为“Excel中的macros停止后Workbook.Open命令”但是,当你按Shift键,这不是在这种情况下发生,它是留给它在设备上。 https://support.microsoft.com/en-us/help/555263

有没有人有任何想法,为什么它随机决定在5S工作簿macros不存在?

编辑:试了下面,它的工作一天没有问题,然后今天的问题回来了,出现以下错误:

运行时1004错误

代码没有改变,除了下面的build议,工作了一天。