我有一个模板工作簿(Temp_TS),我用它来创建新文件(基于另一个模板),然后想要对新文件运行Temp_TS中包含的vba代码。由于所有VBA都包含在Temp_TS中,如何指定应该对我创建的新文件执行此操作?
我将针对新文件运行的一个程序示例如下所示:
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
' e.g. 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")
我如何指定我希望它针对新工作簿而不是当前工作簿执行?
修改
如果它帮助了这里的任何人是用于创建新工作表的方法:
strCommand = "cp """ & oldFileName & """ """ & newFileName & """"
Shell strCommand, 1
这部分工作正常,文件已创建但尚未打开。
答案 0 :(得分:2)
修改您的DelSheet
子站点以接受工作簿作为参数(发送它byRef
)
然后在您的delSheet中添加wb.Worksheets
现在你可以像{<1}}这样的<{p}}来调用它
Main