Excel 工作簿。打开的挂起

Excel 工作簿。打开的挂起,excel,vba,Excel,Vba,我有一个宏,可以从网络位置打开另一个工作簿,比较某个范围内的一些值,复制/粘贴任何不同的值,然后关闭该文件。我使用变量打开文件,因为相应的文件名基于当前日期。我还将Application.ScreenUpdate设置为False,并将Application.EnableEvents设置为False 由于某种原因,代码已经开始挂在工作表上。打开行,我甚至不能按住CTRL+Break键来摆脱它。我必须手动关闭Excel,有时它会给我一条错误消息,抱怨没有足够的内存来完成此操作 我可以停止代码并确认变

我有一个宏,可以从网络位置打开另一个工作簿,比较某个范围内的一些值,复制/粘贴任何不同的值,然后关闭该文件。我使用变量打开文件,因为相应的文件名基于当前日期。我还将Application.ScreenUpdate设置为False,并将Application.EnableEvents设置为False

由于某种原因,代码已经开始挂在工作表上。打开行,我甚至不能按住CTRL+Break键来摆脱它。我必须手动关闭Excel,有时它会给我一条错误消息,抱怨没有足够的内存来完成此操作

我可以停止代码并确认变量提供了正确的字符串,这相当于:

\Clarkbg01\public\PRODUCTION MEETING\PROD MEETING 3-21-18.xlsm

我可以将它粘贴到Windows资源管理器中,它将立即打开,不会出现任何问题。我可以从资源管理器中手动选择该文件,它将无问题打开。我可以将下面的行粘贴到即时窗口中,它将挂起

workbooks.Open("\\Clarkbg01\public\PRODUCTION MEETING\PROD MEETING 3-21-18.xlsm")
即使打开空白工作表并从即时窗口执行该行,也会发生这种情况

在我的宏中,单步执行代码不会遇到任何问题。我可以验证所有变量是否正确,但当它跨过workbooks.open时,它会挂起

我还有其他宏,它们打开工作簿,执行更复杂的例程,然后以零问题关闭它们,但我真的很想知道为什么这一个会给我带来这么多问题

有什么想法吗

代码如下:

'This will open the most recent meeting file and copy over the latest for jobs flagged with offsets

Dim Path As String
Path = ThisWorkbook.Path
'Debug.Print Path

Dim FileDate As String
FileDate = ThisWorkbook.Sheets("MEETING").Range("3:3").Find("PREVIOUS NOTES").Offset(-1, 0).Text
'Debug.Print FileDate

Dim FileName As String
FileName = "PROD MEETING " & FileDate & ".xlsm"
Debug.Print "Looking up Offsets from: " & FileName

Dim TargetFile As String
TargetFile = Path & "\" & FileName
Debug.Print TargetFile


Application.ScreenUpdating = False
Application.EnableEvents = False

'The old way I was opening it...
'Workbooks.Open FileName:=Path & "\" & FileName, UpdateLinks:=False ', ReadOnly:=True

'The most recent way to open
Dim wb As Workbook
Set wb = Workbooks.Open(TargetFile, UpdateLinks:=False, ReadOnly:=True)

    'Do Stuff

wb.Close savechanges:=False

Application.ScreenUpdating = True
Application.EnableEvents = True
MsgBox "Offsets should now reflect settings made in meeting on " & FileDate

End Sub

如果您正在打开的工作簿包含“工作簿打开”事件中的代码,则该事件触发时将尝试执行

要停止这种行为,请使用


您正在打开的工作簿在工作簿打开事件中是否有代码?看看@RaunakThomas在这篇文章中给出的答案:就是这样!我在目标文件中确实有代码将在“工作簿打开”事件中运行。我原以为“Application.EnableEvents=False”可以解决这个问题,但对于其他正在搜索答案的人来说,我的解决方案是:“Application.AutomationSecurity=msoAutomationSecurityForceDisable”,在“workbook.Open”行之前和之后,您必须将其设置回:“Application.AutomationSecurity=msoAutomationSecurityLow”@DarrenBartrup-Cook,如果您将此作为答案发布,那么我会将其设置为解决方案
Public Sub Test()

    Dim OriginalSecuritySetting As MsoAutomationSecurity

    OriginalSecuritySetting = Application.AutomationSecurity

    Application.AutomationSecurity = msoAutomationSecurityForceDisable

        'Open other workbook

    Application.AutomationSecurity = OriginalSecuritySetting

End Sub