VBA入門
第63回.ブックを開く(Open,Add)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-12-06

第63回.ブックを開く(Open,Add)


VBA マクロ ブックを開く Open

他のブックを開く方法です、しかし、これが結構いろいろあるのです。
Excelで開くことが出来るファイルはCSV等のテキストファイルもありますが、
ここではエクセルファイル限定で説明します。


テキストファイルやCSVについては、別の記事を参考にして下さい。

CSVの読み込み方法
エクセルのVBAでのCSVの読込方法としては。・テキストファイルとして読み込む ・ワークブックとして読み込む ・クエリーテーブルを使う ・ADOを使う ・PowerQueryを使う 大別するとこのようになります。この記事を書いた当初は、エクセルのVBAでCSVの読み込みについてネットで検索したところ、


マクロVBAでブックを開くにはOpenメソッドを使用します。
このOpenメソッドには、指定できるオプション指定が非常に沢山用意されています。
通常使うものは限られていますが、一通りOpenメソッドを見てみましょう。


Workbooks.Openメソッド

既存ブックを開くには、WorkbooksコレクションOpenメソッドを使います。
Workbooksコレクションは、Excelで現在開かれているすべてのWorkbookオブジェクトのコレクションです。

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 開くモードを、XlCorruptLoad列挙で指定します。
抽出(xlExtractData)、正常(xlnormalload)、修復(xlRepairFile)から指定します。
既定の動作はxlNormalLoadになり、回復は行われません。

上表は、名前付き引数です。

戻り値
Openメソッドには戻り値があります。
戻り値は、
開いたブックのWorkbookオブジェクトになります。

太字の引数のみ説明します。
それ以外について必要な場合は、上記表の説明またはヘルプ等を参考にして下さい。

FileName
通常は、エクセルファイルをフルパスで指定します。
FileName:="C:\User\sample.xls"
このように指定します。
パスが指定されていないと、カレントディレクトリーからになりますが、
そのよう使い方をせず、フルパスで指定するようにして下さい。

マクロを書いているブックと同一フォルダなら、
FileName:=Thisworkbook.Path & "\sample.xls"
このように指定します。
Thisworkbook.Path、これで自身のブックのパスが取得できます

UpdateLinks
外部参照 (リンク) のあるブックを開こうとすると、
リンクの更新方法を確認するメッセージがユーザーに表示されます。
0 : 外部参照 (リンク) は更新されません。
3 : 外部参照 (リンク) が更新されます。

(1,2の指定もありますが、特に使う事はないでしょう)
UpdateLinks:=0
これで、リンクが更新されずに、ブックが開かれます。
0Falseと記す事もできます、VBAでは、False=0です。


ReadOnly

ReadOnly:=True
これで、読み取り専用で開かれます。

Password、WriteResPassword
パスワード保護されているブックを開く場合には、
Password:="読取りパスワード"
WriteResPassword:="書込みパスワード"
このようにすることで、パスワード入力が出なくなります。

CorruptLoad
開くモードを、XlCorruptLoad列挙で指定します。
エラーのあるエクセルファイルを開くと、

マクロVBA openメソッド

このように、「'○○'の一部の内容に問題が見つかりました。・・・」とメッセージが出ます。
「はい」をクリックすると、

マクロVBA openメソッド

修復されたメッセージが表示され、「閉じる」でブックを開くことができます。
しかし、
このファイルをVBAでopenすると、

マクロVBA openメソッド

このようにマクロがエラー停止してしまいます。
先の手動で開く時と同様に、回復して開く場合は、
CorruptLoadにxlRepairFileを指定します。
さらに、修復されたメッセージを止めるために、
Application.DisplayAlerts = False
これも同時に指定してください。
CorruptLoadは引数の最後なので、名前付き引数を使い、
Application.DisplayAlerts = False
Workbooks.Open Filename:=ファイルパス, CorruptLoad:=xlRepairFile
このように指定してください。
XlCorruptLoad.はXlCorruptLoad列挙になります。

※注意
そもそもエラーファイルは、その原因やデータ破損が無いか等の確認が必要になります。
マクロで開けたとしても、そのファイルを放置しておいて良いかは別問題になります。

Openメソッドの使用例

Workbooks.Open "C:\User\sample.xls"
このように、ファイルのみ指定する場合は、名前付き引数を使用するまでもないでしょう。

Application.DisplayAlerts = False
Workbooks.Open Filename:="C:\Test\sample.xls", UpdateLinks:=0, ReadOnly:=True, CorruptLoad:=xlRepairFile
・外部参照 (リンク) は更新しない
・読み取り専用
・修復モード
このように、引数が複数になる場合は、名前付き引数を使用した方が良いでしょう。

Openメソッドの戻り値の使い方

SetステートメントでOpwnメソッドの引数を使う
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\User\sample.xls")

メソッドの戻り値を使用する場合は、引数を()で囲みます。
戻り値が、Workbookオブジェクトなので、
同時に、Setステートメントで、オブジェクト変数に入れています。
これにより、オブジェクト変数で開いたブックを扱う事ができるようになります。
これは、
Workbooks.Open(Filename:="C:\User\sample.xls")

Set wb = Activeworkbook
または、
Set wb = Workbooks("sample.xls")
これらを1行で指定している事と同じ意味になります。

Withステートメント


With Workbooks.Open(Filename:=str)
  '・・・
.  Close SaveChanges:=False
End With

このように、Withで戻り値のブックオブジェクトを受け取るようにします。
開いたブックをVBA内で使用する場所が限定されている場合は、
変数も必要ないので記述が簡単になります。
Withの中では、先頭の.(ピリオド)の付け忘れに注意しましょう。
SetとWithはセットで覚えておきましょう。
第51回.Withステートメント
Withステートメントを使う事で、Withに指定したオブジェクトに対してオブジェクト名を再度記述することなく、プロパティやメソッドを記述することができます。文章で例えて言えば、主語を一度書いたら、その後は主語を省略するような書き方になります。

Workbooks.Addメソッド

既存ブックを開くのではなく、新規にブックを追加する場合には、WorkbooksコレクションAddメソッドを使います。
Addメソッドは、Workbooksコレクションに新規Workbookを追加します、

Workbooks.Add(Template)

戻り値
新しいブックを表すworkbookオブジェクト。

Template
省略可能
新しいブックの作成方法を指定します。
この引数に既存の Microsoft Excel ファイルの名前を指定する文字列を指定すると、指定したファイルを含む新しいブックがテンプレートとして作成されます。
この引数にはXlWBATemplate定数を指定しすると、新しいブックには指定した種類のシートが1つだけ含まれます。
名前 説明
xlWBATChart -4109 グラフ
xlWBATExcel4IntlMacroSheet 2月4日 Excel バージョン 4 のマクロ
xlWBATExcel4MacroSheet 1月3日 Excel バージョン 4 のインターナショナル マクロ
xlWBATWorksheet -4167 ワークシート

この引数を省略すると、空白のシートを含む新しいブックが作成されます
シート数は、sheet Sinnewworkbook プロパティによって設定されます。

Openメソッドの関連記事

ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)
VBAで最も便利に感じるのが、他のブックからデータを取得したり、他のブックのデータを変更したりする場合でしょう、関数では出来ない完全自動化のシステムが作成できます。ブック(Excelファイル)を扱う上で一番の問題は、そのファイルがどこにあるか、つまりどこのフォルダに入っているかを特定しなければならない点です。

ブックを安全確実に開く方法(Open)
マクロVBAの中で、他のブックを開く事はよくあります、ブックを開く時、ブックが存在しているか、既に開いてないか これらのチェックをせずに開いてしまうと、マクロがエラー停止してしまいます。ここでは、これらのチェック方法についての具体的なVBAコードを紹介します。



同じテーマ「VBA入門」の記事

第60回.エラー処理(On Error)
第61回.「On Error GoTo」と「Exit Sub」
第62回.「On Error Resume Next」とErrオブジェクト
第63回.ブックを開く(Open,Add)
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
第67回.総合練習問題7
第68回.シートの保護、ブックの保護(Protect)
第69回.シートの非表示(Visible)
第70回.ウィンド枠の固定(FreezePanes)


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

複数のSELECT結果を統合(UNION,UNION ALL)|SQL入門(12月4日)
テーブルを結合して取得(INNER JOIN,OUTER JOIN)|SQL入門(12月4日)
データベースの正規化とマスタの作成|SQL入門(12月3日)
データベースにおけるNULLの扱い方|SQL入門(12月2日)
オブジェクト変数とは何か|VBA技術解説(12月2日)
SQL関数と演算子|SQL入門(12月1日)
データの取得:集約集計、並べ替え(DISTINKT,GROUP,HAVING,ORDER)|SQL入門(11月30日)
データの取得:条件指定(SELECT,WHERE)|SQL入門(11月29日)
データの挿入:バルクインサート|SQL入門(11月28日)
データの挿入(INSERT)と全削除|SQL入門(11月26日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • ブックを開く(Open,Add)

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


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



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