ファイル を 指定して開く ①【Excel VBA 】
Excel VBA を使い始めると、 ファイル を 指定して開く 処理で、違うExcelデータを取り込んだ入り、処理したりしたい場合があると思います。VBAでは、自ファイルだけでなく、他のExcelファイルからデータを取得することも可能なんです!
目的:Excel VBAを使ってファイルを操作する
要件:Excel VBAの仕様環境があること
結果:異なるファイルを操作する技術を取得する
今開いているExcelから違うExcelファイルを自動的に開いて、データを取得したいです。
以下に代表的なやり方をご説明します!
やりたいこと
別のファイル(Excelデータ)の情報を取り込む
手段
- ファイル名をプログラムソースの中に書き込んで取り込む方法
メリット:都度ファイルを選択せず自動的に取得するので操作の手間が削減されます。
デメリット:ファイル名や保存先が異なると取り込みエラーとなります。 - ファイルの保存先・ファイルを都度選択して取り込む方法
メリット:ファイル名に日付情報などを記載しているファイルでも取り込み可能。
デメリット:都度保管先・ファイル名の指定が必要なので自動処理には不向き。
別のファイルからデータを取得する流れを意識して適宜使い分けることが必要です。
サンプルソース(コード)
今回は1.ファイル名をプログラムソースの中に書き込み完全自動する場合です。
(『2.ファイルの保存先・ファイルを都度選択して取り込む方法』はこちらから)
Sub FileOpenSample1()
If Dir("C:\TestFile.xlsx") <> "" Then
Workbooks.Open "C:\TestBook1.xlsx"
Else
MsgBox "ファイルが存在しません。", vbExclamation
End If
End Sub
ソースコード的に言えば、#3行目の Workbooks.Open~ がファイルを開く関数ですので、それだけで、ファイルを開くことがきます。
しかし、その後の C:\~ で、フォルダとファイル名を指定(記載している)ので、フォルダ・ファイルが存在しないとエラーが発生します。
そこで、#2行目と#5行目をいれることで、エラーを回避しています。
- #2・・・もし(If~)指定先が(Dir~)、一致したらなら(~<>””)
- #3・・・指定されたフォルダの中のファイルを開く
- #5・・・それ以外なら(Else)メッセージを表示する
#3行目と#5行目の分岐処理を入れることで、アラートを表示させ、エラーにならないように処理ることができます。(ファイルが開かないのはエラーではなく、一致しなければファイルを開かないという処理)
システム未経験者はエラーがでるとドキドキするので、エラーが出たとき、メッセージで出してくれるとわかりやすいですね。
そうですね。
そういう気配りを忘れないように心がけましょう。
ちなみになんですが、ファイルが存在しない場合もそうですが、すでに同じファイルを開いていたらどうなりますか?
ExcelやWordで作ったデータで、
同じファイル名を開いたらどうなりますか?
「同じファイルが開かれています」というメッセージがでて開くことはできませんね。
そうです。それは、VBAの処理でも同じです。
すなわちエラーになって処理が止まってしまいす。
・・・
それでは引き続き、エラー判断方法をご説明しましょう。
ありがとうございます!
~~関連~~
[https://way2se.ringtrees.com/excel_vba-003/]