Excel VBA マクロでファイルを読み込み(Workbooks.Open)シートに書き出すコードを紹介します。
開いたファイルのデータを全て移すことができるので非常に便利です!
ファイルの読み込みを繰り返すと複数ファイルを1つのシートにまとることもできるので、ぜひ参考にしてください。
コンパイルエラーの場合
「コードを実行した際にユーザ定義型は定義されていません。」とエラーが表示された場合
エディタの「ツール」⇒「参照設定」を選択して「Microsoft Scripting Runtime」にチェックを入れてください。
処理の流れ
- 実行前にSheet1のデータをクリア
- 指定したファイルを開く
- 開いたファイルのデータをSheet1にコピー
- 読み込んだファイルを閉じる
うめ
指定したファイルを開けるので汎用性は高いです!
コピペで使えるコード
コピペで使えるコードはこちら。
標準モジュールに貼り付けて使用してください。
開いたデータのコピー先を変更する場合は7行目「Set Ws1 = Worksheets(“Sheet1“)」のシート名を変更してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Sub ファイルを読み込む() Application.ScreenUpdating = False '画面の更新を停止 Application.DisplayAlerts = False '確認メッセージを停止 Dim Ws1 As Worksheet Set Ws1 = Worksheets("Sheet1") '事前にデータをクリア Ws1.Cells.Clear MsgBox "読み込むファイルを指定して下さい。", vbInformation '指定したファイルのパスを取得 Dim Fname As String: Fname = Application.GetOpenFilename 'ファイル名を取得した場合、読み込んだデータをSheet1にコピー If Fname <> "False" Then Dim Fso As FileSystemObject Set Fso = New FileSystemObject 'パスからファイル名と拡張子を取得 Dim FileOpenName As String: FileOpenName = Fso.GetFileName(Fname) '取得したパスのファイルを開く Workbooks.Open Filename:=Fname '読み込みファイルのセルの全範囲をSheet1にコピー Workbooks(FileOpenName).Worksheets(1).UsedRange.Copy Ws1.Range("A1") '読み込みファイルを閉じる Workbooks(FileOpenName).Close SaveChanges:=False Else MsgBox "ファイルを確認できませんでした。再度実行してください。", vbExclamation Exit Sub End If Application.ScreenUpdating = True '画面の更新を開始 Application.DisplayAlerts = True '確認メッセージを開始 End Sub |