3

我遇到了一个奇怪的问题,我决定Ctrl + Shift + P在我的 VBA 例程中分配一个键盘快捷键。该例程假设打开一个现有的 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。

4

1 回答 1

5

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

Application.Workbooks.Open(yourPath)

与快捷方式中的Shift键盘键混合是问题所在。如果您查看最后一个答案,则更准确地说来自这个人:

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

所以你有两个解决方案

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

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

有趣的是,当您在运行宏时查看屏幕时,两者OpenAdd行为完全相同。

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

于 2013-07-01T16:41:18.323 回答