在这行代码下,Workbooks.Open(previous_absolute_path)大部分时间冻结了Excel,没有给出错误消息:

Set current_workbook = Workbooks(get_file_name(current_absolute_path))

周围的代码:

If IsWorkBookOpen((current_absolute_path)) = False Then
    If previous_absolute_path <> "" And previous_absolute_path <> current_absolute_path Then
        Workbooks(get_file_name(previous_absolute_path)).Close True 
    End If

    Set current_workbook = Workbooks.Open(current_absolute_path)
    previous_absolute_path = current_absolute_path
Else
    Set current_workbook = Workbooks(get_file_name(current_absolute_path)) 'Causes Fail!
End If

current_absolute_path 是绝对有效的文件路径 . 似乎每次代码运行时都会打开至少窗口 . 但是,在新打开的工作簿中,从我将消息框作为 workbook_open() 的第一行代码并且消息框永远不会出现的情况下,我的所有代码都没有执行过 .

代码确实有效,当且仅当我打开运行此宏的工作簿时,在运行该宏之前,我在 current_absolute_path 手动打开工作簿 . 我关闭该文件并运行宏,它没有任何问题 .

current_absolute_path ,是确认的有效文件路径 . 代码行可以打开同一文件夹中的其他工作簿 . Excel允许此时来自互联网的所有宏和"trusts"文件 . 正在打开的工作簿的文件夹不受保护..我还没有技能知道问题所在 . 必须做什么?

EDIT :下次没有手动打开导致Excel宏成功运行的工作簿,特别是手动关闭它 .