Я создаю листы динамически, что прекрасно работает. Один из созданных листов содержит VBA (Worksheet_Activate), который вставляется с использованием VBA, также отлично работает.
Теперь я пытаюсь сохранить созданный файл, в то время как l oop используется для принудительного сохранения I пробовал:
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?