ExcelマクロVBA入門
第63回.ブックを開く(Open)

Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説
最終更新日:2019-05-31

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


VBA ファイルを開く


他のブックを開く方法です、しかし、これが結構いろいろあるのです。


Excelで開くことが出来るファイルはCSV等のテキストファイルもありますが、

ここではエクセルファイル限定で説明します。


テキストファイルや CSVの読み込み方法 については、別の記事を参考にして下さい。
エクセルのVBAでのCSVの読込方法としては、・テキストファイルとして読み込む ・ワークブックとして読み込む ・クエリーテーブルを使う ・ADOを使う、大別するとこのようになります。エクセルのVBAでCSVの読み込みについてネットで検索したところ、これなら、というのが見つかりませんでした。


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 開くモードを、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列挙になります。

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



使用例

Workbooks.Open "C:\User\sample.xls"

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

Application.DisplayAlerts = False
Workbooks.Open Filename:="C:\Test\sample.xls", UpdateLinks:=0, ReadOnly:=True, CorruptLoad:=xlRepairFile

・外部参照 (リンク) は更新しない
・読み取り専用
・修復モード

このように、引数が複数になる場合は、名前付き引数を使用した方が良いでしょう。



戻り値の使い方

Setステートメント
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

第51回.Withステートメント
Withステートメントは指定したオブジェクトに対してオブジェクト名を再定義することなく一連のステートメントを実行することができます。文章で言えば主語を一度書いたらその後は主語を省略する場合の書き方になります。構文 Withobject [statements] ・・・EndWith With~EndWithの間では

このように、Withで戻り値のブックオブジェクトを受け取るようにします。

開いたブックをVBA無いで使用する場所が限定されている場合は、
変数も必要ないので記述が簡単になります。

Withの中では、先頭の.(ピリオド)の付け忘れに注意しましょう。



関連記事

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





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

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

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

Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)
Shift_JISのテキストファイルをUTF-8に一括変換|VBAサンプル集(5月31日)
「VBAによる解析シリーズその2 カッコ」をやってみた|エクセル(5月21日)
VBA+SeleniumBasicで検索順位チェッカー作成|VBA技術解説(5月18日)
テーブル操作のVBAコード(ListObject)|VBA入門(5月12日)
テーブル操作の概要(ListObject)|VBA入門(5月12日)
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説(5月6日)
Excelワークシート関数一覧(2010以降)|VBAリファレンス(4月22日)

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

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



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

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


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






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

    本文下部へ