新しいブックのフォルダからブックをマージしようとしました。 VBAコードは、フォルダからExcelファイルを読み込み、すべてのファイル名をリストボックスに追加し、「開始」ボタンを押した後、非常にファイルをブックに追加します。それがアイデアです。ファイルを開くときにファイル名が空です。
コードはfolows通りである:このとき
Private Sub UserForm_Activate()
Const strFolder As String = "C:\Users\user\Desktop\tmp\"
Const strPattern As String = "*.xls"
Dim strFile As String
Dim collection As New collection
Dim i As Integer
Dim isMerger As Integer
Dim lngth As Integer
strFile = Dir(strFolder & strPattern, vbNormal)
If (StrComp(strFile, "FileMerger.xls") <> 0) Then
If (Len(strFile) <> 0) Then
col.Add (strFolder & strFile)
Do While Len(strFile) > 0
strFile = Dir
If (StrComp(strFile, "FileMerger.xls") <> 0) Then
If (Len(strFile) <> 0) Then
col.Add (strFolder & strFile)
End If
End If
Loop
End If
End If
Vars.xlsFiles = ColToArray(collection)
For i = 1 To UBound(Vars.xlsFiles)
lstFiles.AddItem (Vars.xlsFiles(i))
Next i
End Sub
リストボックス: ファイルを開くとき、ユーザーフォームが表示されている:
Private Sub Workbook_Open()
UserForm1.Show
End Sub
ユーザーフォームを活性化すると、リストボックスが取り込まれ配列Vars.xlsFilesが入力されます。オッケー。ユーザーフォームの[スタート]ボタンを
クリック:フォルダで
Private Sub cmdStart_Click()
Dim fileName As String
Dim sheet As Worksheet
Dim i As Integer
Dim ub As Integer
ub = UBound(Vars.xlsFiles)
For i = 1 To ub
Workbooks.Open fileName:=Vars.xlsFiles(i), ReadOnly:=True
For Each sheet In ActiveWorkbook.Sheets
sheet.Copy After:=ThisWorkbook.Sheets(1)
Next sheet
Workbooks(fileName).Close
Next i
End Sub
3つのファイルです。それらの名前はリストボックスにあります。しかし、最初にクローズするときにエラーメッセージが表示され、デバッグ後にfileName = ""(行ワークブック(ファイル名)。閉じる)が表示されます。 試してみても同じエラーが表示されます。つまり、fileName = ""です。 どうすればよいですか?
を使用するためにいくつかのユニークな名前を使用して、私は次の行を追加します。エラーメッセージは言う:「ランタイムエラー(9)インデックスが有効範囲にありません。」。 –