VBAエキスパート対策
ブックの操作

Excel VBAエキスパート対策です
公開日:2018-02-26 最終更新日:2019-08-25

ブックの操作


・ブックを開く
・ブックを保存する
・ブックを閉じる


【ここでのポイント】

ここでの内容はかなり限られたものとなっています。
公式テキストでは、かなりあっさりした内容となっています。
VBA試験としてはあまり細かい内容は出題されないということなのだろうと思います。

しかし、実務では結構問題点が多くでてくるところでもありますし、
試験の出題範囲に入っている以上、細部についても絶対に出題されないという事ではないと思います。
従って、一通りの機能は把握しておいた方が良いので、
ブックを開くときの引数の細部や、いろいろな保存方法については必ず目を通しておいてください。

VBAベーシックでは、イベントが範囲に入っていないので、
開く・保存・閉じる、これらに伴うイベント発生は気にしなくて良いでしょう。
スタンダートを受ける人は、別途イベントの章で学んでください。

ブックを開く

他のブックを開くには、WorkBooksコレクションOpenメソッドを使います。


空の新規ブックを追加するには、WorkBooksコレクションAddメソッドを使います。

Workbooks.Openメソッド

Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

名前 説明
FileName 開くブックのファイル名。
UpdateLinks ファイル内の外部参照 (リンク) の更新方法を指定します。
ReadOnly ブックを読み取り専用モードで開くには、True を指定します。
Format テキスト ファイルを開く場合は、この引数で区切り文字を指定します。
Password パスワード保護されたブックを開くのに必要なパスワードを指定します。
WriteResPassword 書き込み保護されたブックに書き込みをするために必要なパスワードを指定します。
IgnoreReadOnlyRecommended [読み取り専用を推奨する] チェック ボックスをオンにして保存されたブックを開くときでも、読み取り専用を推奨するメッセージを非表示にするには、True を指定します。
Origin 開こうとしているファイルがテキスト ファイルの場合、それがどのような形式のテキスト ファイルかを指定します。
Delimiter 開こうとしているファイルがテキスト ファイルで、引数 Format が 6 の場合は、この引数で区切り文字を使用します。
Editable 開こうとしているファイルが Excel 4.0 のアドインの場合、この引数に True を指定すると、アドインがウィンドウとして表示されます。
Notify ファイルが読み取り/書き込みモードで開けない場合に、ファイルを通知リストに追加するには、True を指定します。
Converter ファイルを開くときに最初に使用するファイル コンバーターのインデックス番号を指定します。
AddToMru 最近使用したファイルの一覧にブックを追加するには、True を指定します。既定値は False です。
Local Excel の言語設定 に合わせてファイルを保存するには、True を指定します。
CorruptLoad 開くモードを、抽出モード、正常、修復モードから指定します。

戻り値
開いたブックのWorkbookオブジェクトが戻されます。

使い方については、
ベーシックでは出題範囲に無いので、気にしなくても良いです。
スタンダードでは、オブジェクト変数のところで学んでください。

太字の引数は、実務で良く使う引数になります。
従って、試験にも出る可能性があると思われます。

FileName
通常は、エクセルファイルをフルパスで指定します。

FileName:="C:\User\sample.xls"

パスが指定されていないと、カレントディレクトリーからになりますが、
そのよう使い方をせず、フルパスで指定することが基本です。

マクロを書いているブックと同一フォルダなら、

FileName:=Thisworkbook.Path & "\sample.xls"

このように指定します。

Thisworkbook.Path、これで自身のブックのパスが取得できます

UpdateLinks
外部参照 (リンク) のあるブックを開こうとする時、
この引数を省略すると、リンクの更新方法を確認するメッセージがユーザーに表示されます。

0 : 外部参照 (リンク) は更新されません。
3 : 外部参照 (リンク) が更新されます。


UpdateLinks:=0

これで、リンクが更新されずに、ブックが開かれます。
0Falseと記す事もできます、VBAでは、False=0です。


ReadOnly

ReadOnly:=True

これで、読み取り専用で開かれます。

Password、WriteResPassword
パスワード保護されているブックを開く場合には、

Password:="読取りパスワード"

WriteResPassword:="書込みパスワード"

このようにすることで、パスワード入力が出なくなります。

使用例
Workbooks.Open "C:\User\sample.xls"

このように、ファイルのみ指定する場合は、名前付き引数を使用するまでもないでしょう。

Workbooks.Open Filename:="C:\User\sample.xls", UpdateLinks:=0, ReadOnly:=True

外部参照 (リンク) は更新せずに、読み取り専用で開いています。
このように、引数が複数になる場合は、名前付き引数を使用した方が良いでしょう。


Workbooks.Addメソッド

WorkBooks.Add(Template)

名前 説明
Template 新しいブックの作成方法を指定します。
この引数を省略すると、いくつかの空白シートから構成される新しいブックが作成されます。
空白シートの数は、SheetsInNewWorkbook プロパティで設定されます。

実務では、滅多に使う事がありません。
試験には、引数を省略した場合しか出題されないはずです。

戻り値
追加された新しいブックのWorkbook オブジェクトが戻されます。

ブックを保存する

ブックの保存方法は、以下の3通りがあります。
・上書き保存
・名前を付けて保存
・コピーの保存

公式テキストには、コピー保存は書かれていないので、多分出題されないとは思いますが、
実務としては結構使う場合もありますので、ここで一緒に覚えておいた方が良いでしょう。


上書き保存
Workbook.Saveメソッド

Workbook.Save

上書き保存されます。


名前を付けて保存

Workbook.SaveAsメソッド

Workbook.SaveAs FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local

Filename 保存するファイルの名前を表す文字列を指定します。
FileFormat ファイルを保存するときのファイル形式を指定します。
Password ファイルを保護するためのパスワードを表す15 文字以内の文字列を指定します。
WriteResPassword ファイルの書き込みパスワードを表す文字列を指定します。
ReadOnlyRecommended 読み取り専用で開くことを推奨するメッセージを表示するには、True を指定します。
CreateBackup バックアップ ファイルを作成するには、True を指定します。
AccessMode ブックのアクセス モードを指定します。
ConflictResolution ブックを保存するときの競合の解決方法を指定します。
AddToMru 最近使用したファイルの一覧にブックを追加するにはTrueを指定。既定値はFalseです。
TextCodepage 使用しない。
TextVisualLayout 使用しない。
Local 通常は使用しない。
※csv出力時
 日付がm/d/yyyyになってしまう場合に、yyyy/m/dにする場合にはTrueを指定

全ての引数がオプション(任意の指定)となっていますが、通常は、FileNameは必ず指定します。

FileName
フルパスで指定して下さい。

パスを指定しない場合は、カレントフォルダーに保存されます。

FileFormat
xlExcel8 : Excel2007以降の、xlsxまたはxlsm
xlExcel9795 : Excel2003以前のxls


使用例
Workbook.SaveAs "C:\User\sample.xls"


コピーの保存

Workbook.SaveCopyAsメソッド

Workbook.SaveCopyAs Filename

ブックのコピーをファイルとして保存します。

メモリ上(開いている)のブックに対しては、変更は行われません。

バックアップの作成等で使用します。

ブックを閉じる

ワークブックを閉じる場合は、WorkBookオブジェクトCloseメソッドを使用します。


閉じる

Workbook.Closeメソッド

Workbook.Close SaveChanges, Filename, RouteWorkbook

SaveChanges ブックに変更がない場合、この引数は無視されます。ブックに変更がある場合、この引数で変更を保存するかどうかを指定します。
Filename 変更後のブックのファイル名。
RouteWorkbook ブックの回覧。

全ての引数がオプション(任意の指定)となっています。

実務としても試験対策としても、引数はSaveChangesだけ覚えれば良いはずです。

全ての引数を省略
Workbook.Close

これだけの場合は、ブックに変更が無ければそのまま閉じられ、
ブックに変更がある場合は、保存確認のメッセージが表示されます。

MOS VBA 画像

ただし、
Application.DisplayAlerts = False
これが指定されている場合は、確認のメッセージが表示されずに保存されます。

SaveChanges
ブックに変更がある場合に、保存するかどうかを指定します。

保存しないで閉じる
Workbook.Close SaveChanges:=False
保存して閉じる
Workbook.Close SaveChanges:=True


以下は、出題範囲に明記されていませんが、
この章で学んでおいた方が良いと思われるものになります。


複数ブックの操作

エクセルでは、複数ブックを扱います。
しかし、
ブックは複数選択は出来ません。
アクティブブックは1つだけ存在します。


ActiveWorkbook

マクロにおいて、アクティブブックを取得する場合の書き方です。


ブックをアクティブにする

Workbooks("ブック名").Activate

ブック名には、拡張子(.xls、.xlsx、.xlsm)も指定する必要があります

マクロの記録ですと、

Windows("ブック名").Activate

と記録されます。
上記、2つは、1つのブックに対し複数のウインドウを開いている時に違いが発生します。

本来は、Windows("ウインドウ名")なのですが、
ブックに対し1つしかウインドウが存在しない場合は、

ウインドウ名 = ブック名

となります。

ブックを指定する
マクロでは、アクティブブック以外のブックや、アクテイブシート以外のシーも扱えます。

操作するブックがアクティブブックなら、

Worksheets("シート名").Range("セル番地")

これで指定できますが、アクティブデック以外の場合は、

Workbooks("ブック名").Worksheets("シート名").Range("セル番地")

このように指定することで、開かれているブックなら、
どのブックのどのシートでも扱う事が出来ます。

実務で使う事はまずありませんが、
Workbooks(1)
このように、ブックのインデックス(順番)で指定することもできます。

WorkBookオブジェクトのメソッドとプロパティ

WorkBookオブジェクトには、多数のメソッドとプロパティがあります。

WorkBookのプロパティ、メソッド、イベント一覧
・WorkBookオブジェクトのプロパティ一覧 ・WorkBookオブジェクトのメソッド一覧 ・WorkBookオブジェクトのイベント一覧

さすがに上記以外のメソッドは試験には出ないと思います。
プロパティについては、以下のSavedプロパティが出題可能性がありそうに思われます。

Savedプロパティ
True の場合、ブックは最後に保存された状態から変更されていません。
値の取得および設定が可能です。

変更を加えたブックを保存しない場合は、このプロパティにTrueを設定します。

使用例
他のブックが開かれている場合は、自身のブックを閉じ、
他のブックが開かれていない場合は、Excelを終了する場合。

Sub 保存して終了()
  If Workbooks.Count > 1 Then
    ThisWorkbook.Close SaveChanges:=True
  Else
    ThisWorkbook.Save
    Application.Quit
  End If
End Sub

Sub 保存しないで終了()
  If Workbooks.Count > 1 Then
    ThisWorkbook.Close SaveChanges:=False
  Else
    ThisWorkbook.Saved = True
    Application.Quit
  End If
End Sub

Application.Quit

Applicationオブジェクトのメソッドで、Excelを終了します。

ThisWorkbook.Saved = True

.Savedは、ブックが保存後に変更されたかの条法が入っています、値の設定も可能。
.SavedをTrueにすることで、保存後に変更が無い状態にすることで、
Close時に、保存確認のメッセージが表示されないようにしています。

ファイルを指定するダイアログについて

公式テキストには、「ファイルを開く」ダイアログを表示するメソッド
Application.GetOpenFilename
これだけが紹介されています。
しかし、
試験の出題範囲には、ベーシック・スタンダードともにはっきりとは明記されてはいません。
項目としては、Applicationのメソッドになりますが、この項目が無いからです。

明記されていない以上、少なくともスタンダード受験するなら知っておかなければなりませんので、
ここで学んでおいた方が良いでしょう。

「ファイルを開く」ダイアログは、Application.GetOpenFilename
「名前を付けて保存」ダイアログは、Application.GetSaveAsFilename

以下のページを一通り読んでおいてください。

第74回.ファイルを開くダイアログ(GetOpenFilename)
・GetOpenFilenameメソッド ・GetOpenFilenameの使用例 ・GetOpenFilenameの実践例 ・GetOpenFilenameの初期フォルダーの指定 ・GetOpenFilenameの最後に
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)
・GetSaveAsFilenameメソッド ・GetSaveAsFilenameの使用例 ・GetSaveAsFilenameの実践例 ・GetSaveAsFilenameの初期フォルダーの指定 ・GetSaveAsFilenameの最後に

【業務改善の実務】

実務の現場では、決められたフォルダに決められた名前のファイルが常にあるとは限りません。
むしろ、フォルダやファイル名は流動的な場合が多々あります。

日付(20180226等)のフォルダの中に入っていたり、ファイル名の後ろに日付がついていたり。
このような流動的なフォルダ・ファイルを処理するためには、
Dir関数と組み合わせて使用することになります。

また、csvファイルを読み込んで処理する場合も多く、
csvをテキストとして取り込むだけでなく、ブックとして開く場合もあります。

このように、実務では様々なパターンがあり、臨機応変な対応が必要になります。
その為には、基本のメソッドについては、しっかりと覚えておきましょう。

【本サイト内の関連ページ】

第27回.ブック・シートの選択(Select,Activate)
・アクティブ ・ブックをアクティブにする ・シートの選択、シートのアクティブ ・複数シートの選択(作業グループ化) ・複数ブックを開いている時のシート選択 ・VBAでの色々なシート指定方法
第37回.ブック・シートの指定
・マクロVBAでのブック・シート指定の具体例 ・マクロVBAでのブック・シート指定の必要性 ・VBAでの色々なシート指定方法
第63回.ブックを開く(Open)
・Workbooks.Openメソッド ・Openメソッドの使用例 ・Openメソッドの戻り値の使い方 ・Workbooks.Addメソッド ・Openメソッドの関連記事
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
・ブックを閉じる ・ブックを上書き保存 ・ブックに名前を付けて保存 ・ブックのコピーを保存 ・ブックを閉じる・保存の実践例

第74回.ファイルを開くダイアログ(GetOpenFilename)
・GetOpenFilenameメソッド ・GetOpenFilenameの使用例 ・GetOpenFilenameの実践例 ・GetOpenFilenameの初期フォルダーの指定 ・GetOpenFilenameの最後に
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)
・GetSaveAsFilenameメソッド ・GetSaveAsFilenameの使用例 ・GetSaveAsFilenameの実践例 ・GetSaveAsFilenameの初期フォルダーの指定 ・GetSaveAsFilenameの最後に

第17回.セルにブック・シートを指定する
・ブックの書き方 ・シートの書き方 ・セルにブック・シートを指定する方法 ・直接指定 ・Withを使う ・Setを使う ・SetとWithを組み合わせて使う ・ExcelマクロVBA入門の対応ページ
第19回.ブックを開く・閉じる・保存する
・ブック(Excelファイル)のパス(場所)を特定する ・ブックを開く ・ブックを閉じる ・上書き保存 ・名前を付けて保存 ・保存形式(ファイルの種類)について ・ExcelマクロVBA入門の対応ページ
ブックを安全確実に開く方法(Open)
マクロVBAの中で、他のブックを開く事はよくあります、ブックを開く時、ブックが存在しているか、既に開いてないか これらのチェックをせずに開いてしまうと、マクロがエラー停止してしまいます。ここでは、これらのチェック方法についての具体的なVBAコードを紹介します。
ブックを閉じる(Close)
ブックを閉じる時の処理方法です。まずは、保存して閉じる場合。これは、次のように書くこともできます。Subsample2()ThisWorkbook.CloseSaveChanges:=TrueEnd Sub では、保存しないで閉じる場合。
他ブックを開いて閉じる(Open,Close)
・パターン1:ActiveWorkbook ・パターン2:Workbooks.Count ・パターン3:オブジェクト変数 ・パターン4:Withステートメント ・パターン5:オブジェクト変数+Withステートメント ・開いているブックをブック名で検索し閉じる場合

VBAエキスパート公式テキスト

2019/5/30発売リニューアル版


2019/7/26発売リニューアル版

こちらは必須として購入した方が良いでしょう。
ちょっと高いなーとは思いますが、
書籍を購入することで、学習用データが提供されています。
・サンプルブック
・VBAエキスパート模擬問題
これらが使えるようになります。
このシリーズでは、テキストを読みながら学習していることを前提とします。



同じテーマ「VBAエキスパート対策」の記事

変数と定数
セルの操作
ステートメント
ブックの操作
シートの操作
デバッグデの基礎
マクロの実行
VBAベーシック試験対策まとめ
プロシージャ
イベント
ステートメント(スタンダード)


新着記事NEW ・・・新着記事一覧を見る

TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ