[英]How to execute a vba procedure in your current workbook against another workbook
我有一個模板工作簿(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
這部分工作正常,文件已創建但尚未打開。
修改您的DelSheet
子項,以接受工作簿作為參數(由byRef
發送)
然后加入wb.Worksheets
在delSheet
現在您可以像這樣從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
' e.g. 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.