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

时间:2010-08-11 12:21:44

标签: excel vba excel-vba

我正在使用包含宏的XLT,它通过open创建一个XLS 将其保存在选择的目录中,问题是,保存的文件包含 与XLT相同的宏。有没有机会修改proc来制作它 在没有宏的情况下保存生成的文件?

最好的问候,

托马斯

2 个答案:

答案 0 :(得分:2)

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

Private Sub Workbook_Open()
  If ThisWorkbook.Path = "" Then
     Call myMacro
  End If
End Sub

如果打开的文件是XLT而不是XLS,则只会调用myMacro。

答案 1 :(得分:0)

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

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环境以删除不需要的部分。这有点涉及并且有一些重要的restrictions/caveats,但听起来上面说明的更简单的方法可能适合您的需求。