いちどに複数のエクセルをひらいて作業をする場面もあるかと思います。
ワークブックの参照、作成、保存などVBAをつかったワークブックの操作方法についてご説明をします。
ちなみに、ワークブックとはエクセルのファイルのことを指します。
ワークブックの参照
ワークブックを参照する方法にもいくつかの種類がありますので、具体例をつかって確認をしておきましょう。
ブック番号で参照する
ここでは「ブック番号」としてご紹介をしていますが、正式には「インデックス番号」とよばれています。
「何番目に開かれたエクセルファイルか」といったことを表す番号です。
たとえば、このような考え方になります。
ブック番号 | ブックを開いた順番 |
1 | 1 |
2 | 2 |
3 | 3 |
それでは具体的にみてみましょう。
「1番目に開いたワークブック」をアクティブにしたいとき
このようなコードを書きます。
Sub test1() Workbooks(1).Activate End Sub
こちらが実行前です。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-110-1024x449.png)
こちらが実行後です。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-111-1024x463.png)
ファイル名「Book1」が前方に移動したことが確認できます。
ブック名で参照する
ワークブック名「Book1」をアクティブにしたいとき
コードはこちらです。
Sub test2() Workbooks("Book1").Activate End Sub
こちらはさきほどの「ブック番号で参照する」と同様の結果となります。
アクティブなブックを参照する
編集中のワークブックを参照したいとき
たとえば、こういった場面で確認をしてみましょう。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-112-1024x463.png)
こちらのコードを実行します。
Sub test3() MsgBox (ActiveWorkbook.Name) End Sub
実行結果はこちらです。
前面にあるエクセルのファイル名が表示されました。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-113.png)
ワークブックの情報取得
ワークブックの情報を取得する方法をご紹介します。
このようなワークブックをつかって確認をしてみましょう。
はじめに「Book1.xlsm」を開いてから、つぎに「Book2.xlsm」を開いています。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-116-1024x436.png)
名前を取得|Name
こちらのコードを実行します。
Sub test4() MsgBox (Workbooks(1).Name) End Sub
こちらが実行結果です。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-118.png)
保存場所を取得|Path
こちらのコードを実行します。
Sub test5() MsgBox (Workbooks(1).Path) End Sub
こちらが実行結果です。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-120.png)
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/76808c28408538df81bbdedcb33e06c0-150x150.png)
塗りつぶし箇所には「ユーザー名」が入ります。
保存場所と名前を取得|FullName
こちらのコードを実行します。
Sub test6() MsgBox (Workbooks(1).FullName) End Sub
こちらが実行結果です。
「FullName」と記述すると「フルパス」が取得されます。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-117.png)
ワークブックの作成|Add
新規ブックを作成するときは「Add」をつかいます。
Workbooksコレクション.Add([Template])
引数はこちらです。
引数を省略すると「ワークシート」をもつワークブックが作成されます。
引数 | 内容 |
xlWBATWorksheet | ワークシート |
xlWBATChart | グラフシート |
xlWBATExcel4MacroSheet | マクロシート |
こちらのコードを実行してみましょう。
Sub test7() Workbooks.Add End Sub
このようなに新規のワークブックが開きました。
(あらかじめ3つのワークブックが開いている状態で実行した結果です。)
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-122.png)
ワークブックを開く|Open
指定したエクセルのファイルを開くときは「Open」をつかいます。
Workbooksコレクション.Open(FileName,[UpdateLinks],[ReadOnly],[Format],[Password],[WriteResPassword],[IgnoreReadOnlyRecommended],[Origin],[Delimiter],[Editable],[Notify],[Converter],[AddToMru],[Local],[CorruptLoad])
おもな引数はこちらです。
「FileName」以外は省略可能です。
引数 | 内容 |
FileName | 開きたいワークブックの保存場所と名前を指定する。 |
UpdateLinks | 「0」…リンクを更新しない 「3」…リンクを更新する |
ReadOnly | 「True」…読取専用でひらく 「False」…読取専用ではなくひらく |
Format | テキストファイルを開くときの区切文字を指定する。 「1」…タブ 「2」…カンマ 「3」…スペース 「4」…セミコロン 「5」…なし 「6」…指定文字(「Delimiter」をつかう) |
Delimiter | 「Format」で「6」を選択したときに使用する。 |
Password | 読取保護にたいしてパスワードを指定する。 |
WriteResPassword | 書込保護にたいしてパスワードを指定する。 |
IgnoreReadOnlyRecommended | 読取専用の推奨メッセージを選択する。 「True」…非表示 「False」…表示 |
Origin | テキストファイルを開くときの変換形式を指定する。 「xlWindows」…Windows(既定) 「xlMacintosh」…Macintosh 「xlMSDOS」…MS-DOS |
こちらのコードを実行してデスクトップのファイル「Book2.xlsm」を開きます。
「★」の場所には「ユーザー名」を入力してください。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/31ef87033f0a15d5852689cacae5340e-4-150x150.png)
ここで指定する「Filename」は、さきほどご紹介した「FullName」をつかって取得することができます。
Sub test8() Workbooks.Open Filename:="C:\Users\★\デスクトップ\Book2.xlsm" End Sub
こちらが実行結果です。
指定したワークブックが開きました。
![](https://gakushikiweblog.com/wp-content/uploads/2021/03/image-124-1024x452.png)
ワークブックを閉じる|Close
エクセルのファイルを閉じるときは「Close」をつかいます。
Workbookオブジェクト.Close([SaveChanges],[FileName],[RouteWorkbook])
引数はこちらです。
すべての引数は省略可能ですが、ブックに変更がある場合は保存確認のメッセージが表示されます。
引数 | 内容 |
SaveChanges | 「True」…変更を保存する 「False」…変更を保存しない 省略…確認画面を表示する |
FileName | 「SaveChanges」で「True」を指定したときに、ここで指定したファイル名で保存する。 省略した場合は上書き保存になる。 |
RouteWorkbook | 回覧機能を設定している場合に指定する。 「True」…送信する 「False」…送信しない |
たとえば、こちらのコードを実行するとファイル名「Book2.xlsm」を閉じることができます。
Sub test9() Workbooks("Book2.xlsm").Close End Sub
ワークブックの保存
エクセルのファイルを保存するときは「Save」や「SaveAs」をつかいます。
上書き保存|Save
エクセルファイルを上書き保存するときに「Save」をつかいます。
Workbookオブジェクト.Save
こちらのコードを実行するとファイル名「Book2.xlsm」が上書き保存されます。
Sub test10() Workbooks("Book2.xlsm").Save End Sub
名前を付けて保存|SaveAs
エクセルファイルを名前を付けて保存するときに「SaveAs」をつかいます。
Workbookオブジェクト.SaveAs(FileName,[FileFormat],[Password],[WriteResPassword],[ReadOnlyRecommended],[CreateBackup],[AccessMode],[ConflictResolution],[AddToMru],[TextCodepage],[TextVisualLayout],[Local])
おもな引数はこちらです。
引数 | 内容 |
FileName | 保存したいワークブックの保存場所と名前を指定する。 |
FileFormat | ファイル形式を指定する。 「xlOpenXMLWorkbook」…拡張子「.xlsx」 「xlOpenXMLWorkbookMacroEnabled」…拡張子「.xlsm」 「xlCSV」…拡張子「.csv」 「xlText」…拡張子「.txt」 |
Password | 読み取りパスワードを設定する。 |
WriteResPassword | 書き込みパスワードを設定する。 |
ReadOnlyRecommended | 読み取り専用の推奨メッセージを選択する。 「True」…表示 「False」…非表示 |
CreateBackup | バックアップファイルの設定をする。 「True」…作成する 「False」…作成しない |
たとえば、ファイル名「Book2.xlsm」を開いているときにこちらのコードを実行すると、ファイル名「Book3.xlsm」で保存することができます。
「★」の場所には「ユーザー名」を入力してください。
Sub test11() Workbooks("Book2.xlsm").SaveAs "C:\Users\★\デスクトップ\Book3.xlsm" End Sub
まとめ
ブックの操作について基本的なものをご紹介しました。
マクロ作成でブックの操作はあまり使用頻度が高くないかと思いますが、「何ができるのか」といったところはあらかじめ覚えておきましょう。
あとで見返しながらマクロを作ることができれば問題はないです。