【问题标题】:Add a workbook from a template and change its name从模板添加工作簿并更改其名称
【发布时间】:2021-11-02 12:41:21
【问题描述】:

如何另存为指定文件类型而不显示 excel 提示


我想遍历给定文件夹中的所有 excel 文件(特别是 *.xlsm),并且对于每个文件,从模板创建/打开一个新工作簿,对其进行一些修改(主要是数据副本)然后保存创建的基于模板具有新名称的文件基于我正在循环的文件夹中的原始文件而不触发对话框。

感谢How to loop through workbooks in a folder,我找到了如何遍历文件夹中的文件,问题在于重命名过程。创建的基于模板的文件会自动接收模板的名称。

    If Fnum > 0 Then
        For Fnum = LBound(MyFiles) To UBound(MyFiles)
            Set mybook = Nothing
            On Error Resume Next
            Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
            Set tworkbook = Workbooks.Add("C:\template\location\template name.xlsm")
            tworkbook.SaveAs Filename:="C:\looped over\folder\location\" & "Mod - " & mybook.Name & ".xlsm"

由于名称是只读的,因此我必须使用 saveAs,它会提示我选择是或否来确定我是否希望保存的文件运行宏。我不明白,模板已经是 .xlsm,系统提示我选择一个名称(也默认为模板的名称)

【问题讨论】:

  • 您的问题并不完全清楚,但是,如果您只是想阻止 excel 显示提示,您需要在 tworkbook.SaveAs 行之前使用 Application.DisplayAlerts = False ,然后再将其重新打开Application.DisplayAlerts = True
  • @GlennG 我想要的是在循环期间自动更改创建的文件而没有任何提示(截至目前,其名称默认为模板名称 + n)。通过添加 Application.DisplayAlerts = True 和 False,我根本没有收到保存为启用宏的 xl 文件的通知。

标签: excel vba


【解决方案1】:

使用FileFormat:=xlOpenXMLWorkbookMacroEnabled指定文件格式作为另存为功能的一部分

 If Fnum > 0 Then
        For Fnum = LBound(MyFiles) To UBound(MyFiles)
            Set mybook = Nothing
            On Error Resume Next
            Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum))
            Set tworkbook = Workbooks.Add("C:\template\location\template name.xlsm")
            Application.DisplayAlerts = False
            tworkbook.SaveAs Filename:="C:\looped over\folder\location\" & "Mod - " & mybook.Name & ".xlsm", _
                FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
            Application.DisplayAlerts = True

【讨论】:

  • 完美运行,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多