・VBAでファイルを開く方法はどうやるんだろう
・パス指定を行ってもエラーがでるけどなぜだろう
このような問題を解決できます。
ファイルの開き方は実際はたくさん方法がありますが、正直ごちゃごちゃしてて、私自身よくわからないこともあったので、基本の方法だけ確認できるようにしています。
「ファイル」を開く方法として簡単な方法と応用が利く方法の3種類を紹介します。
WorkbooksコレクションのOpenメソッドを使います。
2、同じフォルダからパスを指定して開く
3、ダイアログを使って開く
この方法以外のファイルの開き方は、別記事で紹介します。
まずはこの3つの基本を覚えましょう。
まず最初は、フルパスとは何か画像と合わせて確認した後に具体的な記述方法を見ていきましょう。
フルパス(fullPath)とは何か知っておこう
ファイルが【自分のパソコンのどこに保存されているか】を示すもので、最上位の階層(CドライブとかDドライブとか)から目的のファイルまでの道筋を省略せずに示しているものです。
Windows系では「\」を区切りで付けて記述します。
ほかのOSだと「\」(※バックスラッシュ)もあります。
人によってまちまちですが、フルパスのことを絶対パスと同義で使用する人もいます。
実際にどのように表示されているか画像で確認しましょう。
※もし、表示が出ない人は「Shiftキー押しながら右クリック」するとパスのコピーのメニューが出てきます。
ダイアログとは何か知っておこう
前提としてダイアログを知っておきましょう
ダイアログとは、そもそもダイアログボックスの省略です。
パソコンを操作する上で、メッセージや動作を要求してくる小さな画面表示のことを言います。
確認ダイアログや警告ダイアログといった形が一般的です。
ダイアログボックスの「ボックス」部分は省略されることが多いので、「ダイアログ」と言われたら「ダイアログボックスのことね」ぐらいの認識でよいと思います。
ここから本題に入ります。
ファイルのフルパスを指定して開く
実際のサンプルコードをご覧ください
Workbooks.open filename:= "C:\Users\sample\FileBOX\開く予定のファイル.xlsx"
これが一番簡単な方法でシンプルです。
WorkbooksコレクションのOpenメソッドを使ってフルパスを記述する方法ですね。
ただし欠点があります。
それは階層のフォルダ名が何らかで変更された場合、正しくファイルを指定できなくなることです。
例えると、目的地までが記された地図の道が、途中でなくなっている!みたいな状態です。
書き方的には以下のような感じです。
Sub SampleCode1()
'ファイルを開く
Workbooks.Open Filename:="C:\Users\sumple\FileBOX\開く予定のファイル.xlsx"
End Sub
では次章で少し工夫した方法を解説します。
同じフォルダからパスを指定して開く
現在開いているファイルと同じフォルダを参照する方法です。
同じフォルダ内なので、先ほどのフルパスと比較して短い記述です。
Workbooks.open filename:= Thisworkbook.Path & "\開く予定のファイル.xls"
現在開いているファイルのフォルダは「ThisWorkBook.Path」で指定できる点を覚えておきましょう。
この方法であれば、先ほどのフルパスを指定してファイルを開く方法と比較して、開いているファイル名やフォルダ名が変わらなければ問題なく使用することができます。
最上位の階層から指定を行うフルパスの方法よりも道筋が少ない為、目的のファイルが正しく指定できやすいということですね。
書き方的には以下のような感じです。
Sub SampleCode2() 'ThisWorkbook.Pathを使用してファイルを開く Workbooks.Open Filename:=ThisWorkbook.Path & "開く予定のファイル.xlsx" End Sub
ダイアログ(ボックス)を使って開く
ダイアログを使用してファイルを開く方法をサンプルコードを参考に見ていきましょう。
Sub SampleCode3() Dim Sample As Variant 'Sampleという変数にダイアログで指定したファイルの文字列を入れる Sample = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xls*") 'もしキャンセルを押したら処理は終了する If Sample = False Then Exit Sub End If 'Sample(ダイアログで指定したファイル)を開く Workbooks.Open Sample End Sub
GetOpenFilenameメソッドでファイルを開くダイアログを開き、自分でファイルを指定して開く方法です。
※戻り値はバリアント型になります。
※選択したファイルのフルパスが文字列で戻り、キャンセルした場合はFalseが戻ります。
このサンプルコードでは、False(キャンセル)を選択した場合は、処理を終了するようになっています。
ファイルを指定すると、そのファイルを開くことになります。
*はワイルドカードといいます。
これは部分的に一致している文字列などを指定した、検索出来たりするものです。
例えばサンプルの.xls*の場合は、.xlsxでもOKですし、.xlsmでもOKです。
部分的に.xlsの部分が一致していて、*部分にはいろいろな文字や数値が入ってきます。
このように完璧に指定できなくても一部分である程度特定してくれるのでとても使い勝手がよいです。
他のことにも応用が利きますので、ぜひ覚えておきましょう。
この方法では、開くダイアログがカレントディレクトリになるので、初期フォルダを開く場合は別の方法があるので、そちらを参考にしてください。
(FileDialogを使用)
まとめ
本記事では、大きく3つのファイルの開き方を紹介しました。
2、同じフォルダからパスを指定して開く
3、ダイアログを使って開く
この3つです。
EXCELの処理だと別ファイルの参照は使用する機会も多いと思います。
冒頭でも少し触れましたが、この方法以外のファイルの開き方はまだまだあります。
場面によって最適な方法が変わってきますが、ファイルを開く一つの方法として参考にしてみてください。
フルパスやダイアログなどの用語も出てきましたが、今後もよく聞くと思いますので合わせて覚えておくと便利です。
コメント