目標是打開另一個Excel文件,其中包含來自first/main文件的參數,並調用使用數據庫中的數據創建1或n個新工作表的宏,在第二個文件中創建新的圖紙,然後所有其他邏輯失敗。Excel VBA:無法在被調用的另一個Excel文件上創建工作表
您可以在下面找到兩個文件的示例代碼。當手動打開B文件並調用tst()子時,這將起作用,但當第一個文件打開第二個文件時不起作用。工作簿不受保護,我正在使用MS Excel 2010.
A_file.xlsm是用戶調用GetFile打開另一個文件並運行ReadParams宏的主要文件。代碼位於模塊中。
Sub GetFile(fileName As String)
Dim filePath, par1, par2, currentUser As String
Dim targetFile As Workbook
currentUser = CreateObject("WScript.Network").UserName
filePath = "C:\Users\" & currentUser & "\Documents\Excel_APPS\"
par1 = "USE_R_one"
par2 = "some_val"
Application.ScreenUpdating = False
Set targetFile = Workbooks.Open(filePath & "B_file.xlsm")
Application.Run "'" & targetFile.Name & "'!ReadParams(" & Chr(34) & par1 & Chr(34) & ", " & Chr(34) & par2 & Chr(34) & ")"
targetFile.Activate
Application.ScreenUpdating = True
End Sub
B_file.xlsm宏:
Sub ReadParams(s_uno As String, s_duo As String)
If IsNull(s_uno) Or IsNull(s_duo) Then
MsgBox "Error occurred.", vbExclamation, "Error"
Else
MsgBox "All params are ok, new sheet is coming right after this msg"
ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Sheet_Data" '<-- THIS WON'T WORK
End If
End Sub
Sub tst()
ReadParams "USE_R", "test"
End Sub
您是否嘗試過'ThisWorkbook.Worksheets.Add(After:= ThisWorkbook.Worksheets(Th isWorkbook.Worksheets.Count))。Name ='? – RealCheeseLord
是的,但結果相同 - 未創建表單。 – TasTur