2017-07-25 12 views
1

最初の/ mainファイルのパラメータを使用して別のExcelファイルを開き、データベースからのデータで1枚またはn枚の新しいシートを作成し、 2番目のファイルに新しいシートを作成すると、他のすべてのロジックが失敗します。Excel VBA:呼び出された別のExcelファイルでシートを作成できません

以下の2つのファイルのサンプルコードがあります。 Bファイルを手動で開き、tst()subと呼ぶと、これは機能しますが、最初のファイルが2番目のファイルを開くときには機能しません。ワークブックは保護されていません.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 "'b.xlsm'!ReadParams", par1, par2 

ある行にApplication.Run... あります

+0

パーフェクト!ありがとう、サム! – TasTur

関連する問題