最初の/ 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
あなたは 'ThisWorkbook.Worksheets.Add(After:= ThisWorkbook.Worksheets(Th isWorkbook.Worksheets.Count))。Name = '? – RealCheeseLord
はい、同じ結果がありますが、シートは作成されません。 – TasTur