VBAを使ってファイルを開きたいことはないでしょうか?
けど、そんな中で悩むことは、
-
- ExcelファイルをVBAで開く方法がわからない
- CSVファイルを自動で開きたい
- 特定のフォルダ内のファイルを開く方法を知りたい
ですよね。
今回はそんなお悩みを解決する
- VBAでExcel・CSVファイルを開く基本的な方法
- ダイアログを使ってファイルを選択する方法
についてまとめます!
VBAでファイルを開く方法のまとめ
VBAでは、以下のような様々な種類のファイルの開き方があります。
- Excelファイルを開いて編集する
- CSVファイルを開いてデータを取得する
- ダイアログを表示してファイルを選択する
それでは、具体的な方法を解説していきます。
もくじ
1. Excelファイルを開く
Excelのファイルを開くには Workbooks.Open を使います。
構文
Workbooks.Open "ファイルパス"
サンプルコード
Sub OpenExcelFile()
' デスクトップにある「Sample.xlsx」を開く例
Workbooks.Open "C:\Users\ユーザー名\Desktop\Sample.xlsx"
End Sub
フォルダーの場所(パス)は、実際の保存先に書き換えてください。
実務では、ファイルを開いた後にそのシートを操作することが多いため、以下のように「開いたブックを変数(wb)に格納する」書き方を覚えておくと、次のフェーズの自動化(データのコピーなど)にスムーズに移行できます。
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\ユーザー名\Desktop\Sample.xlsx")
' この後、wb.Sheets(1)... という形で開いたファイルを自由に操作できます。
2. CSVファイルを開く
CSVファイルは通常のExcelファイルと違い、「カンマ(,)」で区切られたただのテキストデータです。
そのため、通常のOpenで開くと数字の頭の「0」が消えてしまったり、文字化けしたりすることがあります。
これらを防ぎ、正しく区切って開くには「OpenText」メソッドを使用します。
構文
Workbooks.OpenText Filename:="ファイルパス", DataType:=xlDelimited, Comma:=True
サンプルコード
Sub OpenCsvFile()
' カンマ区切りのCSVファイルを文字化け・型崩れなしで開く例
Workbooks.OpenText Filename:="C:\Users\ユーザー名\Desktop\data.csv", DataType:=xlDelimited, Comma:=True
End Sub
「DataType:=xlDelimited」で区切り文字のあるデータであることを指定し、「Comma:=True」でカンマで区切って綺麗にセルに割り当てる指示を出しています。
毎朝システムからダウンロードするCSVデータをExcelに取り込んで集計する、といったルーティン作業を自動化する際の強力な一歩になります。
3. ダイアログを使ってファイルを選択して開く
毎回決まったファイルではなく、「その時々で処理したいファイルを自分で選んで開きたい」という場合に最適なのが、ファイル選択画面(ダイアログ)を表示する方法です。
構文
変数 = Application.GetOpenFilename("ファイルの種類")
サンプルコード
Sub OpenFileWithDialog()
Dim filePath As Variant
' ファイル選択ダイアログを表示
filePath = Application.GetOpenFilename("Excelファイル (*.xlsx), *.xlsx")
' キャンセルボタンが押された場合の対策
If filePath = False Then
MsgBox "ファイルが選択されませんでした。処理を終了します。", vbInformation
Exit Sub
End If
' 選択されたファイルを開く
Workbooks.Open filePath
実務でマクロを運用する際の最大の落とし穴が「ユーザーが選択画面でキャンセルを押したときにエラーでマクロが止まってしまうこと」です。
上記のコードでは「If filePath = False Then Exit Sub」というキャンセル対策をあらかじめ組み込んでいるため、誰が使ってもエラーで止まらない親切でシステムライクな設計になっています。
4. フォルダ内の全ファイルを開く
「特定のフォルダに入っている複数のファイルを、上から順番にすべて自動で開いて処理したい」という、大量データを扱うシーンで劇的な時短効果を発揮する応用テクニックです。
構文
変数 = Dir("フォルダパス" & "*.xlsx")
Do While 変数 <> ""
' 繰り返し行う処理
変数 = Dir()
Loop
サンプルコード
Sub OpenAllFilesInFolder()
Dim folderPath As String
Dim fileName As String
' 対象のフォルダパス(末尾に必ず「\」をつける)
folderPath = "C:\Users\ユーザー名\Desktop\売上データ\"
' フォルダ内の最初のExcelファイルを探す
fileName = Dir(folderPath & "*.xlsx")
' ファイルが見つからなくなるまでループ処理
Do While fileName <> ""
' ファイルを開く
Workbooks.Open folderPath & fileName
' --- ここに開いたファイルに対する処理(コピーなど)を書く ---
' 次のファイルを探す
fileName = Dir()
Loop
End Sub
「Dir関数」を使うことで、フォルダの中に何個ファイルがあっても、自動で1つずつ名前を取得してループ処理してくれます。
「10個の拠点のファイルを1つずつ手動で開いてデータを集める」といった、やるせない手作業をボタン一つで終わらせるための必須スキルです。
さいごに
いかがでしょうか。
今回は、
- VBAでExcel・CSVファイルを開く基本的な方法
- ダイアログを使ってファイルを選択する方法
についてまとめました。
VBAを使えば、手作業を減らし業務を自動化できます。ぜひ試してみてください!












コメントを残す