第63回.ブックを開く(Open,Add)
他のブックを開く方法です。
しかし、これが結構いろいろあるのです。
Excelで開くことが出来るファイルはCSV等のテキストファイルもありますが、
ここではエクセルファイル限定で説明します。
マクロVBAでブックを開くにはWorkbooksのOpenメソッドを使用します。
このOpenメソッドには、指定できるオプションが非常に沢山用意されています。
通常使うものは限られていますが、一通りOpenメソッドを見てみましょう。
Workbooks.Openメソッド
名前 | 説明 |
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になり、回復は行われません。 |
上表は、名前付き引数です。
戻り値は、
開いたブックのWorkbookオブジェクトになります。
それ以外について必要な場合は、上記表の説明またはヘルプ等を参考にして下さい。
パスが指定されていないと、カレントディレクトリーからになりますが、
そのような使い方をせず、フルパスで指定するようにして下さい。
Thisworkbook.Path、これでブック自身のパスが取得できます。
リンクの更新方法を確認するメッセージがユーザーに表示されます。
3 : 外部参照 (リンク) が更新されます。
(1,2の指定もありますが、特に使う事はないでしょう)
これで、リンクが更新されずに、ブックが開かれます。
0はFalseと記す事もできます、VBAではFalse=0です。
ReadOnly
これで、読み取り専用で開かれます。
Password:="読取りパスワード"
WriteResPassword:="書込みパスワード"
このようにすることで、パスワード入力のダイアメグが出なくなります。
エラーのあるエクセルファイルを開くと、
「はい」をクリックすると、
しかし、
このファイルを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ステートメント
Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="C:\User\sample.xls")
メソッドの戻り値を使用する場合は引数を()で囲みます。
同時に、Setステートメントでオブジェクト変数に入れています。
これにより、オブジェクト変数で開いたブックを扱う事ができるようになります。
これは、
Workbooks.Open(Filename:="C:\User\sample.xls")
と
Set wb = Activeworkbook
または、
Set wb = Workbooks("sample.xls")
Withステートメント
With Workbooks.Open(Filename:=str)
'・・・
. Close SaveChanges:=False
End With
このように、Withで戻り値のブックオブジェクトを受け取る事が出来ます。
開いたブックをVBA内で使用する場所が限定されている場合は、
変数も必要ないので記述が簡単になります。
SetとWithはセットで覚えておきましょう。
Workbooks.Addメソッド
Addメソッドは、Workbooksコレクションに新規Workbookを追加します、
新しいブックの作成方法を指定します。
この引数に既存のExcelファイルを指定すると、指定したファイルをテンプレートとして新しいブックが作成されます。
つまり指定したブックがコピーされて新規作成される事になります。
名前 | 値 | 説明 |
xlWBATChart | -4109 | グラフ |
xlWBATExcel4IntlMacroSheet | 4 | Excel バージョン 4 のマクロ |
xlWBATExcel4MacroSheet | 3 | Excel バージョン 4 のインターナショナル マクロ |
xlWBATWorksheet | -4167 | ワークシート |
シート数は、Application.SheetsInNewWorkbookプロパティによって決定されます。
Openメソッドの関連記事
同じテーマ「マクロ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,Hidden)
第70回.ウィンド枠の固定(FreezePanes)
新着記事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.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.ブック・シートの選択(Select,Activate)|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。