VBA|フォルダパスに変数を使ってファイルを開く方法

エクセルVBA VBAでフォルダ・ファイルの操作



VBAで自動的にファイルを開くようなマクロは頻繁に使われます。

その際に、フォルダパスに変数を使うにはどのように記述すればよいのでしょうか?

今回は、フォルダパスに変数を使う方法について説明します。



フォルダパスに変数を使ってファイルを開く方法

フォルダパスに変数を使用するということは、前提としてフォルダパスを取得して変数に入力する必要があります。

フォルダパスの取得方法は以下の2つに大別されます。

  1. ユーザーが手動でフォルダを選択する方法
  2. 本日の日付等からフォルダパス名を自動的に取得する方法

1.の場合は、「Application.FileDialog」を使ってフォルダ選択ダイアログを開き、ユーザーが直接フォルダを選択する場合などが該当します。

2.の場合は、日付がフォルダ名に使われている場合に、たとえば本日の日付を参照して自動的にフォルダ名を取得する場合などが該当します。

例:本日の日付が2019年5月18日の場合に、フォルダ名「20190518_uriage」を自動的に開く場合。

以上のように想定される2つのケース別に、サンプルコードを紹介します。

ユーザーが手動でフォルダを選択する方法のサンプルコード

フォルダパスに変数を使ってファイルを開くサンプルコードは以下のようになります。

Sub フォルダパスに変数を使う()
    Dim F_pass As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        F_pass = .SelectedItems(1)
    End With
    MsgBox F_pass
    Workbooks.Open F_pass & "\" & "エクセルファイル.xlsm"
End Sub

サンプルコードの動作・解説

実行すると、フォルダ選択ダイアログが開くので、任意のフォルダを選択します。

フォルダ選択ダイアログ

選択したフォルダのパスは、

F_pass = .SelectedItems(1)

と記述することで変数F_passに格納されます。

なぜSelectedItems(1)を使うのかというと、先ほどのダイアログで選択したフォルダは「ダイアログで選択したアイテムの1番目のもの」として記録されますので、SelectedItems(1)を変数に入れる必要があるのです。

参考まで、取得したフォルダパスをメッセージボックスで表示します。

その後、今回はファイル名「”エクセルファイル.xlsm」を開くようにしますので、

Workbooks.Open F_pass & "\" & "エクセルファイル.xlsm"

のように記述します。

ここでのポイントは、3点あります。

  1. 変数「F_pass」を” ”で囲まない
  2. フォルダパスが格納された変数と開く対象のエクセルファイル名との間に「& “\” &」を入れる
  3. 開く対象のエクセルファイル名を” ”で囲む

ということです。

解説します。

「1」については、変数を””で囲んでしまうと、文字列と認識されてしまい変数として機能しなくなるからです。

「2」は、取得したフォルダパスはフォルダ名で終わっているため、 & “\” &を追加してエクセルファイル名とつなぐ必要があります。

「3」については、今回は開く対象のファイル名が決まっているため、””で囲んで文字列と認識させる必要があります。もしファイル名も変数を使う場合には「1」と同様に””で囲まないようにします。

日付を参照した変数を使ってフォルダパス名を自動的に取得する方法

日付を参照した変数を使ってファイルを開くサンプルコードは以下のようになります。

Sub 日付を参照した変数を使う()
    Dim F_pass As String
    F_pass = Format(Now, "yyyymmdd")
    MsgBox F_pass
    Workbooks.Open "C:\Users\diren\Desktop\" & F_pass & "\" & "エクセルファイル.xlsm"
End Sub

サンプルコードの動作・解説

実行すると、F_pass = Format(Now, "yyyymmdd")で、本日の日付を変数に格納します。

“yyyymmdd”は、2020年03月02日のことです。もし年月でのフォルダならば”yyyymm”と記述します。

本日(記事作成日)は2020年3月2日ですので、変数には「20200302」という文字列が入ります。

参考まで、メッセージボックスで変数に格納された日付を表示すると以下のようになります。

そして目的のファイルを開くためにパスは、

“C:\Users\diren\Desktop\” & F_pass & “\” & “エクセルファイル.xlsm”

のように記述します。

ここでのポイントは、

変数「F_pass」を” ”で囲まない

ということです。

もし、変数を””で囲んでしまうと、文字列と認識されてしまい変数として機能しなくなるからです。

これでフォルダパスに変数を使って目的のファイルを開くことができます。

【まとめ】フォルダパスに変数を使ってファイルを開く方法

フォルダパスに変数を使ってファイルを開く方法は、以下のように2種類ありました。

  1. ユーザーが手動でフォルダを選択する方法
  2. 日付を参照した変数を使ってフォルダパス名を自動的に取得する方法

そして、フォルダパスを格納した変数を使ってファイルを開く場合、変数を””(ダブルクォーテーション)で囲まないということが重要でした。

””で囲んでしまうと、変数ではなく文字列として認識されてしまうからです。

フォルダパスやファイルパスに変数を使うことは頻繁にありますので、ぜひ覚えておいてくださいね!!

コメント

タイトルとURLをコピーしました