Microsoft Excel VBA - ブックを開く方法
◆概要
このページは、Excel VBAでブックを開く方法について記載しています。
ブックを開くには、Openメソッドを使います。Openメソッドは、常にWorkbooksコレクションに適用します。Workbokksコレクションを取得するには、Workbooksプロパティを使います。
◆Sample
次の例は、カレントフォルダ(既定の作業フォルダ)にあるBook1.xlsというファイルを開き、このブックの最初のワークシートにあるセルA1の値を表示します。
Openメソッドの戻り値は、開いたブックを参照するWorkbookオブジェクトであることに注意してください。
この例では、ファイル名の指定にパスが含まれていないので、ファイルはカレント フォルダにあるものと見なされます。そのため、ユーザーがカレント フォルダを変更した場合は、ファイルを見つけることができなくなり、実行時エラーが発生します。
Sub OpenBook1() Set mybook = Workbooks.Open(Filename:="Book1.xls") MsgBox mybook.Worksheets(1).Range("A1").Value End Sub |
プログラムからブックを開く場合は、Excel.exeファイルがあるフォルダ、または[Library]フォルダに開くブックを保存すると、比較的安全です。[Library]フォルダは、Excel.exeファイルがあるフォルダの1つ下のレベルにあるフォルダで、セットアップ時に自動的に作成されます。
Excel.exeファイルがあるフォルダに保存したブックを開く場合は、このフォルダのパスを指定する文字列を取得するために、Pathプロパティを使います。パスで使用される区切り記号は、MS-DOSまたはWindowsのFATファイルシステムでは円記号(\)、Macintoshのファイルシステムではコロン(:)というように、ファイル システムによって異なります。ファイル システムに応じた適切な区切り記号を取得するには、PathSeparatorプロパティを使います。次の例は、Excel.exeファイルがあるフォルダに保存されているBook1.xlsというブックを開きます。この例のコードは、どのファイルシステム上でも実行できるように記述されています。
Sub Openbook1() EXEPath = Application.Path & Application.PathSeparator fName = EXEPath & "Book1.xls" Set mybook = Workbooks.Open(Filename:=fName) MsgBox mybook.Worksheets(1).Range("A1").Value End Sub |
一方、[Library]フォルダに保存したファイルを開く場合は、[Library]フォルダのパスを指定する文字列を取得するために、Pahtプロパティではなく、LibraryPathプロパティを使います。次の例は、前の例をLibraryPathプロパティを使うように変更したコードです。
Sub Openbook1() LibPath = Application.LibraryPath & Application.PathSeparator fName = LibPath & "Book1.xls" Set mybook = Workbooks.Open(Filename:=fName) MsgBox mybook.Worksheets(1).Range("A1").Value End Sub |
開くブックのファイル名を直接Openメソッドに記述するのではなく、どのファイルを開くかをユーザーに選択できるようにすることもできます。その場合は、GetOpenFilenameメソッドを使います。このメソッドは、通常の[ファイルを開く]ダイアログ ボックスを表示しますが、ファイルを開く代わりに、ユーザーが選択したファイルの絶対パスとファイル名を返します。次の例はGetOpenFilenameメソッドによって返された文字列をメッセージボックスで表示した後、そのファイルを開きます。
Sub DemoGetOpenFilename() Do fName = Application.GetOpenFilename Loop Until fName <> False MsgBox fName & " を開きます。" Set mybook = Workbooks.Open(Filename:=fName) End Sub |
▼ページトップへ