目前,在 Excel 2010 中,当我尝试将我创建的工作簿保存为 .xlsx 文件但添加了 VBA 函数或子例程时,Excel 会提示(以迂回的方式)询问我是否要将其更改为 .xlsm 文件。如果这个问题的默认答案是“是的,我不希望因为我保存而删除我在处理此文件时所做的所有编程工作”,这对我来说不是问题,但您需要主动单击或切换到“否”按钮,否则它会保存为 .xlsx 文件,并且您会丢失所有模块。
这是我遇到的唯一默认选项是删除数据而不是保存数据的情况之一。我知道我丢失了部分工作成果主要是我的错,我应该更加小心,但我真的很想知道我是否可以禁用此消息或以某种方式更改默认设置。
答案1
你能但它很混乱而且危险。
- 允许 VBA 读取/写入 VBA(文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置 > 信任对 VBA 项目对象模型的访问)
- 创建个人宏工作簿(如果您还没有)
ThisWorkbook
在您的个人宏工作簿的对象中,使用事件Workbook_Open
将Ctrl+映射S到其他宏。(它将类似于Application.OnKey "^s", "saveAsMacroIfMacrosExist"
)- 使用该
Workbook_BeforeClose
事件再次关闭(Application.OnKey "^s"
) - 去个人宏工作簿的模块中编写该子程序(而不是函数)。(这留给读者练习,但我找到了一个片段这里我没有测试但应该测试工作簿中是否有宏。)
- 使用Ctrl+S来保存文件,而不是工具栏或文件 > 保存。
关键点:这要求您永久允许访问 VBA 项目对象模型,这通常是一个坏主意。