複数のXLSX/XLSシートをマスタワークブックの「temp」シートにインポートしようとしていますが、各ワークブックの内容は最後のエントリの後に追加する必要があります。Excel VBA - 複数のxlsxワークシートをインポートしてマスターワークブックシートに追加
これは1つのファイルでうまく動作しますが、選択したすべてのブックをループバックするロジックがうまくいかないようです。また、パフォーマンスとスピードを考慮して、選択したワークブックを選択した後に開くことをお勧めしますか、前のファイルのインポートが完了した後に開く必要がありますか?
ご協力いただきありがとうございます。
EDIT: もう少し正確に言えば、スクリプトの問題は、すべての開いているワークブックを見ている部分です。誰か提案?
For Each Workbooks In lngCount
With Workbooks
.Sheets(1).Cells.Copy Destination:=MasterWB.Sheets("temp").Range("A65536").End(xlUp).Offset(1, 0)
.Close False
End With
Next
全VBAコード:
Sub import_XLS()
Dim wb As Workbook
Dim lngCount As Long
' speed up by turning screenupdating off
Application.ScreenUpdating = False
' set workbooks
Set MasterWB = ActiveWorkbook
With ActiveWorkbook.Sheets("temp")
.Visible = True
.Cells.Delete
End With
' Open the file dialog
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = ""
.Title = "Please select the converted User Activity files for import"
.Filters.Add "Excel Files", "*.xls; *.xlsx", 1
'.Filters.Add "Excel Files", "*.xls", 1
.AllowMultiSelect = True
If .Show = -1 Then
' Open the files
For lngCount = 1 To .SelectedItems.Count
Workbooks.Open .SelectedItems(lngCount)
Next lngCount
Else
Exit Sub
End If
End With
' open selected workbook in read only and copy all cells of worksheet 1
For Each Workbooks In lngCount
With Workbooks
.Sheets(1).Cells.Copy Destination:=MasterWB.Sheets("temp").Range("A65536").End(xlUp).Offset(1, 0)
.Close False
End With
Next
' hide temp sheet, close workbook without saving changes and free memory
'MasterWB.Sheets("temp").Visible = False
'wb.Close False
Set wb = Nothing
End Sub
あなたが本当に働いているコードを持ったのですか?私のVBEには、 'For Each Workbooks In lngCount'のようないくつかの"コンパイラ "エラーがあります。ここでは、コレクションや配列以外のものを繰り返し処理することはできません。また、モジュールの冒頭に 'Option Explicit'ステートメントを追加して、使用している各変数を宣言するようにしてください。少し余分な仕事はあなたにすべてのタイプのミスマッチを見つけて修正させることを報います – user3598756
私は最初に「各ワークブックごとに」というステートメントがうまくいかないことを実際に述べました、なぜ私がここに助けを求めているのか:) – Armitage2k
よく修正してデバッグするかもしれません私のコメントごとにあなたのコード。最終的にコードボックスで残っている可能性のある問題と一緒にそれを更新してください – user3598756