2017-07-25 20 views
1

目標是打開另一個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 
+0

您是否嘗試過'ThisWorkbook.Worksheets.Add(After:= ThisWorkbook.Worksheets(Th isWorkbook.Worksheets.Count))。Name ='? – RealCheeseLord

+0

是的,但結果相同 - 未創建表單。 – TasTur

回答

1

的問題是在該行Application.Run... 其語法是

Application.Run "'b.xlsm'!ReadParams", par1, par2 

你有你的參數連接起來的第一個參數

+0

完美!謝謝,山姆! – TasTur

相關問題