我遇到了一个奇怪的问题,我决定分配一个键盘快捷键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
我使用的是 Excel 2007。
显然,在多次谷歌搜索该特定问题后,似乎
Application.Workbooks.Open(yourPath)
与混合Shift快捷键中的键盘按键是问题所在。更确切地说来自这个家伙 http://social.msdn.microsoft.com/Forums/en-US/dc9578cd-1b0c-4f00-a233-db5792e52316/macro-doesnt-run-via-shortcut-but-does-run-from-vb如果你看最后一个答案:
Shift 键使 vb 脚本在任何 Open 语句处停止。
所以你有两个解决方案
去除Shift从您的快捷方式中键入 并选择另一个
而不是使用.Open
,你可以使用.Add
这将完成相同的工作,但代码不会挂起。所以如果你这样做Application.Workbooks.Add(yourPath)
它应该表现得正常。
但有趣的是,两者Open
and Add
当您在运行宏时查看屏幕时,会有完全相同的行为。
Edit:我找不到任何提及该错误的官方链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)