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

时间:2013-07-01 16:41:18

标签: vba excel-vba keyboard-shortcuts excel

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

当我在Visual Basic编辑器中点击Play时,这实际上运行正常。但是,当我使用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

我正在使用Excel 2007。

1 个答案:

答案 0 :(得分:3)

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

Application.Workbooks.Open(yourPath)

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

  

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

所以你有两个解决方案

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

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

  3. 虽然有趣的是,当您在运行宏时查看屏幕时,OpenAdd都具有完全相同的行为。

    修改 我找不到任何涉及该bug的官方链接。