VBA book openで他のファイルを開こう!

アイキャッチ画像 エクセル

ここではbook(ファイル)を開くソースコードVBAの「Workbooks.open」の紹介と説明をしていきます

他のファイルを開くために必要最低限の知識だけを紹介します

事前準備

  1. フォルダーを作成する(onedriveでファイルの同期をしてる場合、Cドラに作成する)
  2. マクロ形式(.xlsm)のbook(ファイル)と開きたいファイルをそのフォルダーに入れる
  3. マクロ形式(.xlsm)のEXCELファイルを開き、「Alt + F11」「Alt + I + M」を押してエディター画面を開く

※1の最初にフォルダーを作るのは後々にエラーを回避するためです(この説明は後述します)

※マクロ形式(.xlsm)の作成方法やマクロのコードの貼付け方がわからない方は、詳細をこちらで紹介していますのでよかったら参考にしてください

ファイルを開くまでコードの流れ

  1. このマクロbook(ファイル)用の変数を作成
  2. 作成した変数にマクロbook(ファイル)を入れる
  3. 開きたいファイル用の変数を作成
  4. 開きたいファイルを開いて、開きたいファイル用の変数に入れる

最後の4に関しては、ファイルを開くだけなら変数に入れる必要はありませんが

開いたファイルのデータを使いたいなら変数に入れといた方が後で楽です

変数の設定

変数をまず設定します

変数でよく例であげられるのは「箱」です

その変数という箱に数値や文字などを入れて使用していきます

今回はマクロbook(ファイル)を変数の箱に入れて使用します

Sub VBA()
'ファイルを開く//////////////////////////////////////
Dim wb_このマクロbook 

Set wb_このマクロbook = ThisWorkbook 

3行目: Dim wb_このマクロファイル

「Dim」と書くと、これから変数を決めるよという意味になります

スペースを入れ好きな変数名を入れます

形式: Dim 変数名

5行目: Set wb_このマクロbook = ThisWorkbook

作った変数にマクロbook(ファイル)を入れます

「ThisWorkbook」とはマクロbook(ファイル)のことを指してます

※マクロbook(ファイル)のコードエディター(VBE)にThisWorkbookと記述しているので記述しているこのbookという意味になる

ここで注意ですが、ファイルなどを変数にいれるときは必ず先に「Set」を書きます

「Set」を書かないとエラーが起こりますので注意です

しかし、数字や文字を設定するときは「Set」を入れる必要がありません

「Set」を付けるか付けないかわからないときは、とりあえず書いてコードを実行させて

エラーが出たら「Set」を書けば大丈夫です

そのうちどれが必要でどれが必要でないかわかってきます

PathとOpen

次にPathとOpenについてです

Pathはファイルがどこにあるかを示す意味があります

このPathを使用しOpenでファイルを開くという流れになります

事前準備でマクロ形式(.xlsm)のbook(ファイル)と開きたいファイルをそのフォルダーに入れた理由はPathの取得が簡単になり、エラーが回避できるからです

Dim wb_欲しいデータファイル 

Set wb_欲しいデータファイル = Workbooks.Open(wb_このマクロbook.Path & "¥" & "開きたいファイル名.拡張子") 
End Sub

1行目: Dim wb_欲しいデータファイル

変数の作成をします

ここでは「wb_欲しいデータファイル」という変数名とします

3行目: Set wb_欲しいデータファイル = Workbooks.Open(wb_このマクロbook.Path & “¥” & “開きたいファイル名.拡張子”)

変数「wb_欲しいデータファイル」に開いたファイルを入れます※wb_欲しいデータファイルはファイル形式なのでSetを付けます

「Workbooks.Open」でファイルを開くという意味になります

Workbooks.Openのあと()に入っているのが開きたいファイルのPathとなります

この時に下の赤い部分は何でいるの?と思いませんか?

wb_このマクロbook.Path & “¥” & “開きたいファイル名.拡張子”

必要なのは開きたいファイルのPathじゃないの?

「wb_このマクロbook」の中身はThisWorkbookとなります

※5行目です

Sub VBA()
'ファイルを開く//////////////////////////////////////
Dim wb_このマクロbook 

Set wb_このマクロbook = ThisWorkbook 

wb_このマクロbook.PathはThisWorkbook.Pathという意味です

このThisWorkbook.Pathはファイル名の直前のパスを取得するコードになります

私の場合「”C:\ファイル”」となります、図の青い部分です

ThisWorkbook.Pathの説明画像

図でわかるように同じフォルダーにあるマクロbook.xlsmファイル名の直前のパスは、開きたいファイルファイル名の直前のパスと同じです

だから「wb_このマクロbook.Path & “¥” & “開きたいファイル名.拡張子”」というパスで開きたいファイルが開くんです

フォルダーがどこにあっても「ThisWorkbook.Path」で直前のパスを取得できます

つまり、フォルダーを作成し、マクロ形式のファイルと開きたいファイルを一緒に入れておくことで、フォルダーを移動させたり、他の人渡してもエラーが起きずマクロを使用できます

ソースコード

Option Explicit

Sub VBA()
'ファイルを開く//////////////////////////////////////
Dim wb_このマクロbook '「Dim」はDimに続く、文字を変数にするって意味、「wb_このマクロbook」という変数を作成、まだ中身はありません

Set wb_このマクロbook = ThisWorkbook '「wb_このマクロbook」名の変数に、このマクロbookを入れます

Dim wb_欲しいデータファイル '「Dim」はDimに続く、文字を変数にするって意味、「wb_欲しいデータファイル」という変数を作成、まだ中身はありません

Set wb_欲しいデータファイル = Workbooks.Open(wb_このマクロbook.Path & "¥" & "開きたいファイル名.拡張子") '★ここでファイルを開いている。開いたファイルを「wb_欲しいデータファイル」名の変数に、欲しいデータファイルを入れる

End Sub

コメント

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