excel - 将带有代码的 Excel 工作表保存为 xlsm 会丢失代码
问题描述
我正在动态创建表格,效果很好。创建的表格之一确实包含使用 VBA 插入的 VBA (Worksheet_Activate),也可以正常工作。
现在我正在尝试保存创建的文件,while循环用于强制保存我尝试过:
While Not workbookUsed.Saved
Dim filePath As String
filePath = Application.GetSaveAsFilename(fileFilter:="Excel File mit Makro (*.xlsm), *.xlsm")
If VarType(filePath) = vbString Then
workbookUsed.SaveAs _
FileName:=filePath, _
FileFormat:=52
End If
Wend
End Sub
我尝试使用
Application.FileDialog(msoFileDialogSaveAs)
方法。
两者都工作并创建一个 .xlsm 文件,其中包含所有生成的内容,除了工作表上的 VBA 代码,它就像一个普通的 .xlsx 文件一样是空的。
有趣的是,如果您在保存文件后停止该过程,然后按 ctrl+s Excel 会识别出某些内容已更改并保存整个工作簿。
但是如果我在那之后关闭工作簿
workbookUsed.Close
我再次得到一个文件,其中没有 VBA 代码,即使我将其设置为关闭时不保存。
那么是否必须设置任何特殊参数,以便保存整个工作簿,包括 vba 内容?
解决方案
例如,您可以拥有将文件保存在一个单独的过程中的代码,SaveWorkbook
并在主过程的末尾使用以下代码:
Application.OnTime Now + TimeSerial(0, 0, 2), "SaveWorkbook"
这将安排保存文件的过程在 2 秒后运行,并让 Excel 有时间在保存之前处理对 VBproject 的更改。
推荐阅读
- authentication - WebAuthenticator 总是跳过登录页面,新用户需要新的登录表单
- r - R中for循环的奇怪行为
- html - 角度将css变量分配给课前课后
- django - 选择所有字段并按一个分组
- javascript - 如何在javascript中编辑数组的最高5个值?
- reactjs - 我没有安装 webpack,但是 webpack --version 找到了 webpack
- c - c语言解压字符串
- javascript - 获取中的自定义标头未命中服务器
- python - 如果深度学习模型的训练样本很少,使用更多的 epoch 会帮助模型获得更好的准确性吗?
- python - 得到这个错误'str'对象没有属性'get'