Vba Excel宏仅在XLT文件中自动启动,而不在XLS文件中自动启动

Vba Excel宏仅在XLT文件中自动启动,而不在XLS文件中自动启动,vba,excel,Vba,Excel,我使用的是包含宏的和XLT,它通过打开创建XLS,然后 将其保存在choosen目录中,问题是,保存的文件包含 与XLT相同的宏。是否有机会修改程序使其生效 是否保存生成的文件而不保存宏 致以最良好的祝愿 托马斯有几种方法可以做到这一点。如果您只需要工作表而不需要任何代码,那么最简单的方法可能就是将工作表复制到新工作簿中,然后保存: Private Sub workbook_open() Dim wb As Workbook Dim saveName As String

我使用的是包含宏的和XLT,它通过打开创建XLS,然后 将其保存在choosen目录中,问题是,保存的文件包含 与XLT相同的宏。是否有机会修改程序使其生效 是否保存生成的文件而不保存宏

致以最良好的祝愿


托马斯

有几种方法可以做到这一点。如果您只需要工作表而不需要任何代码,那么最简单的方法可能就是将工作表复制到新工作簿中,然后保存:

Private Sub workbook_open()
    Dim wb As Workbook
    Dim saveName As String

    ThisWorkbook.Sheets.Copy
    Set wb = ActiveWorkbook

    saveName = Application.GetSaveAsFilename(fileFilter:="Excel Workbook (*.xls),     *.xls")

    If Not saveName = "False" Then
        wb.SaveAs saveName
    End If
End Sub

如果XLS中仍然需要一些代码,那么您需要直接操作VB环境来删除不需要的部分。这有点复杂,也有一些重要的意义,但听起来上面说明的更简单的方法可能适合您的需要。

如果您的问题是如何仅在从XLT调用宏时自动启动宏,而不是在从生成的XLS调用宏时自动启动宏,那么这可能会有所帮助

Private Sub Workbook_Open()
  If ThisWorkbook.Path = "" Then
     Call myMacro
  End If
End Sub
仅当打开的文件是XLT而不是XLS时,才会调用myMacro