Excel VBA:通过快捷键运行时打开文档后宏挂起,但在 VB 编辑器中完美运行

For*_*gic 3 excel vba keyboard-shortcuts

我遇到了一个奇怪的问题,我决定Ctrl + Shift + P在 VBA 中为我的一个例程分配一个键盘快捷键。此例程假设打开现有的 excel 工作簿,复制一些信息和.SaveAs另一个名称。

当我在 Visual Basic 编辑器中点击播放时,这实际上运行良好。但是,当我使用 Excel 中的键盘快捷键运行我的代码时,它在打开文档后停止工作。

我在此示例中重现了该问题:

Public Sub WriteData()
    Dim templatePath As String
    Dim templateWorkbook As Workbook

    'it seems to hang on the following line
    Set templateWorkbook = Application.Workbooks.Open(templatePath)

    With templateWorkbook.Worksheets.Application
        .Range("B3") = "Employee name"
        .Range("B4") = "Employee first name"
        .Range("B5") = "Employee email"
    End With

    templateWorkbook.SaveAs(ThisWorkbook.Path & "Test")
    templateWorkbook.close
End Sub
Run Code Online (Sandbox Code Playgroud)

我正在使用 Excel 2007。

For*_*gic 5

显然,在多次谷歌搜索该特定问题之后,似乎

Application.Workbooks.Open(yourPath)
Run Code Online (Sandbox Code Playgroud)

与快捷键中的Shift键盘键混合是问题所在。如果你看最后一个答案,更准确地说是这个人

shift 键使 vb 脚本在任何 Open 语句处停止。

所以你有两个解决方案

  1. 从快捷方式中删除Shift键并选择另一个

  2. .Open您可以使用.Addwhich 来完成相同的工作,而不是使用,但代码不会挂起。所以如果你这样做,Application.Workbooks.Add(yourPath)它应该表现得很好。

很有趣的是,虽然,这两个OpenAdd具有完全相同的行为,当你在看屏幕时运行宏。

编辑: 我找不到任何提及该错误的官方链接。