この記事では、VBAを使って他のEXCELファイルのデータを読み込み、EXCELのシートに貼り付ける機能のマクロファイルの作り方を説明します。
初心者でも簡単に使えると分かりやすく説明できればと思います。コードを覚える必要ありません。
このVBAはいろいろな便利な機能を作るときによく使いますので、ぜひご覧ください。
CSVデータの取り込みマクロファイルの作成手順
手順①
Excelで[新規 Microsoft Excel ワークシート]を作成
手順②
エクセルシートのクイックアクセスツールバーに[開発]ボタンがあるかどうかを確認
1.[開発]ボタンがないの場合は③へ
2.[開発]ボタンがあるの場合は⑤へ
手順③
- Excelの[ファイル]タブを開き、左ペインの[オプション]をクリック
- [Excelのオプション]ダイアログの左ペインで[リボンのユーザー設定]を選択する
- 右側のリストにある[開発]の前にあるチェックを「オン」にして、[OK]ボタンでダイアログを閉じる
手順④
Excelのリボンに[開発]タブが表示さればOKです
手順⑤
- [開発]タブの[Visual Basic]をクリック
- [挿入]をクリックして[標準モジュール]を選択
手順⑥
下記のCSVデータの取り込みのコードを空白の部分にコピーする
手順⑦
- エクセルシートを二つ作成
- [処理実行]と[取込データ]のエクセルシート名に変更
手順⑧
- [開発]タブの[挿入]をクリック、最初のアイコンを選択
- 任意のセルにクリック
手順⑨
マクロの登録窓が出て来るので、[データ取込]を選択
手順⑩
ボタンを作成しましたら、右クリックして好きのスタイルに編集してください。
手順⑪
ファイルを[Excelマクロ有効ブック]を選択して保存
CSVデータの取り込みファイルの操作手順
手順①
- エクセルシート[処理実行]の[データ取込]ボタンをクリック
- [データファイルを指定して下さい。]のメッセージBOXが表示されます。
- [OK]をクリック
手順②
エクセルCSVデータファイルを指定します。
手順③
- CSVデータがエクセルシートの[取込データ]にコピーされ
- [データ取り込みが完了しました。]のメッセージBOXが出たら、問題なく作動している証拠です。
CSVデータの取り込みのコード
Dim buf, buf1 As String 'ファイル存在チェック用文字列 Dim curwb, wb, wb1, wb2 As Workbook '処理用ワークブック Dim Target As String '取り込みデータファイルパス Dim MaxRow, MaxRow2 As Long 'データ件数 Sub データ取り込み() Call データファイルチェック Call データ取り込み処理 MsgBox ("データ取り込みが完了しました。") 'メインシートをアクティブに Sheets("処理実行").Activate End Sub Sub データ取り込み処理() Set curwb = ActiveWorkbook 'カレントワークブックを保存 Workbooks.Open Target 'エラーが無ければ処理対象のブックを開く Set wb = ActiveWorkbook '後続処理のために開いたブック名を保存 MaxRow = Cells(Rows.Count, 1).End(xlUp).Row'データの件数をカウント 'データのコピー Worksheets(1).Range("1:" & MaxRow).Copy curwb.Worksheets("取込データ").Rows("1:1").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False ' コピーモードを解除 wb.Close 'ファイルのクローズ End Sub Sub データファイルチェック() '取り込みデータのパスを取得 MsgBox ("データファイルを指定して下さい。") Target = Application.GetOpenFilename(, , "データファイル選択") 'ファイルの存在チェック buf = Dir(Target) If buf = "" Then MsgBox Target & vbCrLf & "上記ファイルが見つかりません。", vbExclamation End End If '同名ブックのチェック For Each wb In Workbooks If wb.name = buf Then MsgBox buf & vbCrLf & "はすでに開いています", vbExclamation End End If Next wb End Sub
プログラムの解説
それでは、プログラムの中身を解説していきます。
まずは変数の宣言
Dim buf, buf1 As String ‘ファイル存在チェック用文字列
Dim curwb, wb, wb1, wb2 As Workbook ‘処理用ワークブック
Dim Target As String ‘取り込みデータファイルパス
Dim MaxRow, MaxRow2 As Long ‘データ件数
▼変数に関する詳しい情報が知りたい方は下記のサイトをご覧ください。▼
次はメインのプログラム動作指示
Sub データ取り込み()
Call データファイルチェック
Call データ取り込み処理
MsgBox (“データ取り込みが完了しました。”)
‘メインシートをアクティブに
Sheets(“処理実行”).Activate
End Sub
このマクロプログラムは三つの動作を設定しました。
上記のコードを訳するとしたら、
まず、『データファイルチェック 』を実施
次は『データ取り込み処理 』を実施
上記の実施完了したら、メッセージ”データ取り込みが完了しました。”を出して、
最後はエクセルシート「処理実行」に戻ります。
最後は個別プログラム動作指示
Sub データ取り込み処理()
Set curwb = ActiveWorkbook ‘カレントワークブックを保存
Workbooks.Open Target ‘エラーが無ければ処理対象のブックを開く
Set wb = ActiveWorkbook ‘後続処理のために開いたブック名を保存
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row’データの件数をカウント
‘データのコピー
Worksheets(1).Range(“1:” & MaxRow).Copy curwb.Worksheets(“取込データ”).Rows(“1:1”).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False ‘ コピーモードを解除
wb.Close ‘ファイルのクローズ
End Sub
上記のコードは開いたCSVデータをエクセルシート「取込データ」にコピーするように指示している。
Sub データファイルチェック()
‘取り込みデータのパスを取得
MsgBox (“データファイルを指定して下さい。”)
Target = Application.GetOpenFilename(, , “データファイル選択”)
‘ファイルの存在チェック
buf = Dir(Target) If buf = “” Then
MsgBox Target & vbCrLf & “上記ファイルが見つかりません。”, vbExclamation
End
End If
‘同名ブックのチェック
For Each wb In Workbooks
If wb.name = buf Then
MsgBox buf & vbCrLf & “はすでに開いています”, vbExclamation
End
End If
Next wb
End Sub
上記のコードはCSVデータファイルを指定させて開くように指示を出しています。
取込できないファイルや、すでに開いているファイルをエラーメッセージ出すように指示している。
まとめ
このエクセルマクロファイルの注意事項:
- 取込CSVデータのA列は必ず最終行までデータがあるように
- 取込めるデータはエクセルCSVデータファイルのみ、テキスト型は取り込めない
後記:
わたしはマクロコードやプログラムを一から教えることはできません。あくまでも初心者でもマクロを使えるように発信していきたいと思います。
仕事効率と精度アップして、余った時間を自己研鑽に使えたら幸いです。
マクロはどうしてもやっているうちに自分の好みにカスタマイズしたいと思いがちなので、焦らずに最初はやってみること、使ってみることで、いつの間にか必要な知識は勝手に脳に刻み込んでいきます。
それは私のスタイルです、まずは手を動かすこと。
一緒に頑張りましょう!
コメント