我遇到了一个奇怪的问题,我决定在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。
答案 0 :(得分:3)
显然,在多次谷歌搜索特定问题后,似乎
Application.Workbooks.Open(yourPath)
与快捷键中的 Shift 键盘键混合是问题所在。如果你看一下最后一个答案,更准确地说是from this guy:
shift键使vb脚本在任何Open语句处停止。
所以你有两个解决方案
从快捷方式中删除 Shift 键,然后选择另一个
您可以使用.Open
而不是.Add
来执行相同的工作,但代码不会挂起。因此,如果你做Application.Workbooks.Add(yourPath)
,它应该表现得很好。
虽然有趣的是,当您在运行宏时查看屏幕时,Open
和Add
都具有完全相同的行为。
修改强> 我找不到任何涉及该bug的官方链接。