如何在不运行 Workbooks.Open 宏的情况下打开 Excel

7

我有一个 VBA 代码,每当打开 Excel 时都会调用我的过程。

Sub WorkBook_Open()
Call Sheets("Result").main
End Sub

我的担忧是主函数将发送电子邮件。因此,如果我想编辑那个Excel,未来怎样才能在不触发调用的情况下打开它?

我的最初意图是使用命令行每天运行VBA函数并自动发送报告。


2
如果调用需要有条件,为什么不让它有条件呢?If MsgBox("发送邮件?", vbYesNo) = vbYes Then... - Mathieu Guindon
@Mat'sMug 谢谢Mat - 如果你不介意我问一下如何显示你的消息的完整内容。 - ella
省略号代表您当前无条件运行的代码:Sheets("Result").main('call' 是多余/无用/过时的)。 - Mathieu Guindon
4个回答

9
  1. 打开Excel应用程序。
  2. 转到文件~打开,或文件~最近使用的文档。
  3. 在打开文件时按住Shift键。

NB:仅选择要打开的Excel工作簿是不起作用的。
您需要先打开Excel,然后再打开工作簿。

编辑:

我的担忧是,主函数会发送电子邮件。

不要将代码添加到 Workbook_Open 事件中,而是将其添加到按钮的单击事件中-只有在您按下按钮后才会发送电子邮件。


谢谢。按钮不是一个选项,因为我想从命令行运行宏。 - ella
1
嗯,那么消息框并不是理想的选择。我会进行研究,看看是否有办法从命令行指定条件编译参数(可能没有)。基本上,没有 UI 的 Excel 自动化并不是一个推荐的场景。祝你好运! - Mathieu Guindon
@Mat'sMug 谢谢,是的,我同意。最初使用 PowerShell 生成 Excel 报告,但基于值需要进行大量重新格式化,这需要在组成电子邮件正文(而不是附件)时使用 HTML 完成。因此,我转而使用 VBA。 - ella

0
我发现以下方法适用于Office 365(或许其他版本的Excel)-
  1. 直接打开Excel,不要双击工作簿来启动Excel
  2. 文件/打开/浏览
  3. 导航到您想要打开的工作簿,在其上单击一次
  4. 单击“打开”旁边的下拉菜单,选择“以受保护的视图打开”

如果此时您想进一步编辑,您需要单击弹出窗口下方应该出现的“启用编辑”。当我这样做时,我有一个尝试立即运行但失败的宏,然后我就可以编辑VBA。在那里,结果可能会有所不同。

enter image description here


0

您无需先打开Excel。只需在双击 .xlsm 文件时按住 Shift 键即可。


0

在哪个版本和构建编号中,按住Shift键不再起作用?请注意,对Application.OnKey的调用并不能阻止调用MakeRec,它只是尝试(并失败地)将StopMacro子程序分配给按下Shift键的操作。 - JohnM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接