VBA创建Excel.xlsm与.xlsx

VBA创建Excel.xlsm与.xlsx,vba,excel,Vba,Excel,您好,感谢您阅读我的问题,我有一个带有隐藏模板的工作簿,其中大多数模板用作Excel.xlsx电子表格,但其中一个需要插入模块才能正常工作。我认为只要在创建工作簿的函数中添加一个参数就足够简单了 它似乎不起作用,因为我收到一个错误“错误号1004此扩展名不能与所选文件类型一起使用。请在“文件名”文本框中更改文件扩展名或选择其他文件类型blabla” 尝试: wbNew.SaveAs(文件名:=vFileName,文件格式:=xlOpenXMLWorkbookMacroEnabled) 有关更多信

您好,感谢您阅读我的问题,我有一个带有隐藏模板的工作簿,其中大多数模板用作Excel.xlsx电子表格,但其中一个需要插入模块才能正常工作。我认为只要在创建工作簿的函数中添加一个参数就足够简单了

它似乎不起作用,因为我收到一个错误“错误号1004此扩展名不能与所选文件类型一起使用。请在“文件名”文本框中更改文件扩展名或选择其他文件类型blabla”

尝试:

wbNew.SaveAs(文件名:=vFileName,文件格式:=xlOpenXMLWorkbookMacroEnabled)


有关更多信息,请阅读文档:


您需要在
SaveAs
函数中添加一个
FileFormat
参数。谢谢你的帮助,为其他人发布了工作代码
Public Function gWrkBook(template As String, Optional wbMacro As Boolean) As Workbook
    Dim wbNew As Workbook
    Dim wsTemplate As Worksheet, wsSummary As Worksheet


Set wsTemplate = ThisWorkbook.Worksheets(template) '===== Create new workbook and copy template
wsTemplate.Visible = True
'
Set wbNew = Workbooks.Add                          'Create New file
wsTemplate.Copy Before:=wbNew.Sheets(1)            'Copy template to new workbook
                                                   'Rename sheet
On Error GoTo ErrSheetName
    wbNew.Sheets(1).Name = "SUMMARY"

Set wsSummary = wbNew.Sheets("SUMMARY")


wsTemplate.Visible = False '===== Clean up
Call gRemoveUnwanted("sheets", wbNew) 'Mod7 '==== Get SaveAs filename and save file


If wbMacro = True Then
    vFileName = Application.GetSaveAsFilename(Filname, "Excel Macro-Enabled workbook(*.xlsm), *.xlsm", Title:="SaveAs Workbook Macro-Enabled")
Else
    vFileName = Application.GetSaveAsFilename(FileFilter:="Microsoft Excel Workbooks, *.xlsx", Title:="SaveAs Workbook")
End If

On Error GoTo ErrFileName
    wbNew.SaveAs Filename:=vFileName

Set gWrkBook = wbNew 'must assign it this way?? not sure why R2

Exit Function

ErrSheetName:
NewSheetName = InputBox("Worksheet exists, try a different name." & vbCrLf & "Enter Sheet Name.")
Resume

ErrFileName:
MsgBox "Error Number " & _
        Err.Number & vbCrLf & _
        Error(Err) & vbCrLf & _
        "Try Again!", _
        vbExclamation + vbOKOnly, _
        "ERROR!"
vFileName = Application.GetSaveAsFilename(FileFilter:="Microsoft Excel Workbooks, *.xls; *.xlsx", _
                                        Title:="SaveAs Workbook")
Resume

End Function