如何在当前工作簿中对另一个工作簿执行vba过程

我有一个模板工作簿(Temp_TS),我用它来创build新文件(基于另一个模板),然后想运行包含在Temp_TS中的vba代码对新文件。 由于所有的VBA都包含在Temp_TS中,我如何指定这应该对我创build的新文件执行?

下面显示了一个对新文件运行的过程之一:

Sub DelSheets(Optional p_sheet_to_keep1 As String = "xxx", _ Optional p_sheet_to_keep2 As String = "yyy", _ Optional p_sheet_to_keep3 As String = "zzz") On Error GoTo DelSheets_err ' eg call gen.DelSheets("Parameters", "Chris Prosser") Dim ws As Worksheet Application.DisplayAlerts = False For Each ws In Worksheets If LCase(ws.Name) <> LCase(p_sheet_to_keep1) And _ LCase(ws.Name) <> LCase(p_sheet_to_keep2) And _ LCase(ws.Name) <> LCase(p_sheet_to_keep3) Then ws.Delete End If Next Application.DisplayAlerts = True DelSheets_exit: Exit Sub DelSheets_err: Debug.Print "Error: ", Err.Number, vbCrLf, Err.Description Resume Next End Sub 

要对当前的工作簿执行此操作,我只需要执行如下操作:

 gen.DelSheets("Parameters", "Chris Prosser") 

我如何指定我希望这是针对新的工作簿执行而不是当前的工作簿?

编辑

万一它帮助这里的任何人是用来创build新工作表的方法:

 strCommand = "cp """ & oldFileName & """ """ & newFileName & """" Shell strCommand, 1 

这部分工作正常,该文件被创build,但尚未打开。

修改您的DelSheet子接受作为参数的工作簿(通过发送它)

然后在你的delSheet中添加wb.Worksheets

现在你可以像这样从Main子类中调用它

 Sub Main() Dim wb As Workbook Set wb = Workbooks.Open("C:\Users\...\Desktop\file1234.xlsm") DelSheets (wb) wb.Save wb.Saved = True wb.Close Set wb = Nothing End Sub Sub DelSheets(ByRef wb As Workbook, Optional p_sheet_to_keep1 As String = "xxx", _ Optional p_sheet_to_keep2 As String = "yyy", _ Optional p_sheet_to_keep3 As String = "zzz") On Error GoTo DelSheets_err ' eg call gen.DelSheets("Parameters", "Chris Prosser") Dim ws As Worksheet Application.DisplayAlerts = False For Each ws In wb.Worksheets If LCase(ws.Name) <> LCase(p_sheet_to_keep1) And _ LCase(ws.Name) <> LCase(p_sheet_to_keep2) And _ LCase(ws.Name) <> LCase(p_sheet_to_keep3) Then ws.Delete End If Next Application.DisplayAlerts = True DelSheets_exit: Exit Sub DelSheets_err: Debug.Print "Error: ", Err.Number, vbCrLf, Err.Description Resume Next End Sub