【VBA】ファイルを読み込んでデータを展開する方法

目次

はじめに

今回は、VBAでファイルを読み込み、読み込んだデータを別のExcelファイルに展開する方法について勉強しました。
使用環境は以下のとおりです。

  • 使用OS: Windows 10 Pro
  • バージョン: 20H2

背景

VBAプログラムを使って、外部ファイルを選択して読み込み
そのデータを別のExcelファイルに展開する流れを作りたいと考えました。

実際に行った処理

以下のコードで、ファイル選択から読み込みまでを行うことができました。

' ファイル読み込み
Set xlAPP = Application
vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, Title:="データを選択してください。")
strFileName = vntFileName

If strFileName = "False" Then
    MsgBox "処理を中断しました。", vbInformation
    Exit Sub
End If

' ファイルを開く
Workbooks.Open Filename:=strFileName
strFileName = Dir(strFileName)

コードの解説

1行目:
ApplicationオブジェクトをxlAPPという変数にセットしています。

2行目:
GetOpenFilenameメソッドを使って、ユーザーにファイル選択ダイアログを表示させています。

  • FileFilterは、ファイルの種類を指定するためのフィルターです(たとえば「Excelファイル(*.xlsx), *.xlsx」など)。
  • Titleは、ダイアログに表示されるメッセージです。

選択されたファイルのパスは、vntFileNameに格納されます。

3行目:
選択したファイルパスをstrFileName変数に格納します。

4〜7行目:
ファイル選択をキャンセルした場合、strFileNameは”False”となるため、
このときはメッセージボックスを表示して、処理を中断するようにしています。

8行目:
Workbooks.Openメソッドを使って、指定したファイルを開きます。

9行目:
Dir関数を使って、ファイルパスからファイル名部分だけを取得し、strFileNameに上書きしています。
(以後、ファイル名だけで操作しやすくするためです。)

この後の展開

ここまでで、strFileNameには開いたファイル名が入っている状態になります。

この後は、

  • Workbooks(strFileName).Activateで開いたファイルをアクティブにし、
  • 必要なデータを抽出して、
  • ThisWorkbook(マクロを実行しているブック)に展開する

といった作業に進むことができます。

まとめ

  • GetOpenFilenameでファイル選択ダイアログを表示できる。
  • Workbooks.Openで指定したファイルをプログラムから開ける。
  • 変数に格納しておくことで、後続処理(データ抽出・展開)がスムーズになる。

今回の作業を通じて、VBAでファイルを読み込み、データを操作する基本フローを習得できました。
今後は、さらにエラー処理やファイル未存在時の対応なども加えて、より実用的なコードにしていきたいと考えています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次