特定のブックを開くマクロ

既存のブックを開く
SUMIF

リンクユニット


マクロ 11回

 指定したフォルダのブックを開くマクロ

たとえば、docuentフォルダ内のExcel_Sampleフォルダにある、Book1.xlsxを開くマクロを、記録してみましょう。
以下のようになります。
(サンプルファイルは、こちらから マクロ講座11回サンプルデータ

ブックを開くマクロを記録

あらかじめ指定フォルダにBook1.xlsxを作成してあります。
このファイルを開くマクロを記録してみましょう。
マクロの記録ボタンをクリックします。
記録するマクロの名前をつけます。
メニューのファイルをクリックします。指定したフォルダに作成しておいた、Book1.xlsxを開きます。
Visual Basicを開いたて、記録されたコードをみてみましょう。
コードはこのようになっています。
それでは、マクロの中身を見てみましょう。
Sub ブックを開く()
    Workbooks.Open Filename:="C:\Users\ユーザー名\Documents\Excel_Sample\Book1.xlsx"
    Windows("macro_kouza_11.xlsm").Activate
End Sub    
Windows("macro_kouza_11.xlsm").Activateの部分は、マクロの記録を終了するために、記述された部分ですから、不要です。
これが、Dドライブの『顧客データ』というフォルダであれば、
Sub ブックを開く()
    Workbooks.Open Filename:="D:\顧客データ\Book1.xlsx"
End Sub    
だけでOKです。

任意のファイル名を指定して開く

ここまでは、簡単に理解できたと思います。
でも、これでは、たくさんある顧客データの限定されたファイルしか、 開くことができません。
ファイル名を指定して開く
『D:\顧客データ』
Dドライブにある、顧客データフォルダに、ブックが 以下のようにあると 仮定して、B1セルに、名前を入れると、そこに入れた名前をもとに ブックを開くように変更してみましょう。
顧客データフォルダ
表のB1セルにファイル名を入れて、マクロを実行すると、
そのブックを開くというわけです。
元になるコードは、
Sub ブックを開く()
    Workbooks.Open Filename:="D:\顧客データ\Book1.xlsx"
End Sub    
変更するのは、
D:\顧客データ\Book1.xlsx の
名前の部分『Book1』のところだけです。
『Book1』をB1セルの内容を表すように書き換えます。

B1セルの内容を表すのは「 & Range("B1").Value & 」という記述ですが、 これをファイル名を示す文字列として認識させる必要があります。

マクロの記述では「""」で囲むと、その部分は文字列として認識されます。

\顧客データ\" & Range("B1").Value & ".xlsx" 
Sub ブックを開く()
    Workbooks.Open Filename:="D:\顧客データ\Book1.xslx"
End Sub    
以下のように変更
Sub ブックを開く()
    Workbooks.Open Filename:="D:\顧客データ\" _
     & Range("B1").Value & ".xlsx"
End Sub    
以上で、B1セルに入力した名前をもとに、その名前のブックを開くマクロが作成できました。
Excel2003のファイルであれば、Book1.xls です。
Sub ブックを開く()
    Workbooks.Open Filename:="D:\顧客データ\" _
     & Range("B1").Value & ".xls"
End Sub    
B1セルにファイルの名前を入力するのが面倒なときは、 入力規制でリストからファイルを選択するようにすれば良いでしょう。

B1セルに入力する名前は、実在するファイルなら何でもかまいませんし、 フォルダの場所を変更すれば、どこのフォルダのファイルでも開くことができます。
Sub ブックを開く2()
    Workbooks.Open Filename:= _
    "D:\顧客データ\" & Range("B5").Value & ".xlsx"
End Sub
    

今日の講義は以上です。お疲れ様でした。
おすすめコンテンツ