【发布时间】:2020-07-02 02:11:42
【问题描述】:
我正在动态创建表格,效果很好。创建的表格之一确实包含使用 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 内容?
【问题讨论】:
-
奇怪,你的潜艇叫什么名字?你试过编译VbaProject吗?
-
其实,你是在保存文件的同一个子过程中,在VbaProject的Worksheet Object里面添加代码吗?
-
不,我有一个 Main Sub
Sub lcds ()这包含Set lcds_wb = Workbooks.Add并调用创建工作表所需的所有 Subs(大约 40 个),它调用的最后一个 Sub 是Sub 显示在上面,名称为 `Sub saveFile ()`