我所拥有的是一个宏,旨在打开其他工作簿并刷新这些工作簿中的内容。所有这些工作除了其中一个是间歇性的,并且我的意思是大多数时候它完全按照要求工作,但随机它会产生一个错误,说明无法找到宏。到目前为止,我还没有发现一点,我可以确定它的位置,因此很难调试。
下面是代码:
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工作簿,并且它通过我的更新程序确实可以工作,但正如我有时说的那样会出现一个错误,指出宏不存在。
我已经检查了代码被调用的内容(如下所示),但我不能有任何错误。
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帮助页面上找到了答案,标题为“Excel中的宏停止在Workbook.Open命令之后”但是当你按下shift键时,这是在这个例子中没有发生的,它是留在设备上。 https://support.microsoft.com/en-us/help/555263
有没有人知道为什么它会随机决定5S工作簿中的宏不存在?
编辑: 试过下面的问题并且今天工作没有问题,然后今天问题又出现了以下错误:
除了下面的建议,代码没有被更改,这些建议工作了一天。
答案 0 :(得分:0)
该问题最终是与Excel有关的,因为Office的最新更新现已解决了此问题。