簡體   English   中英

將帶有代碼的 Excel 工作表保存為 xlsm 會丟失代碼

[英]Saving Excel Sheet with code as xlsm looses the code

我正在動態創建表格,效果很好。 創建的工作表之一確實包含使用 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 的更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM