0006. Excel VBA−[ファイルダイアログを使用して、外部ファイルのフルパス名を取得する。]
Excelマクロでは、ファイルダイアログを使用して、外部ファイルのフルパス名を取得することができます。
ワークシート内に、外部ファイル名のフルパス名を取得する場合などに使用します。
FileDialogオブジェクト
FileDialogオブジェクトは、Officeアプリケーションで使用されるファイルを開いたり保存する標準的なダイアログボックスの機能に類似する機能を提供します。
FileDialogオブジェクトを利用すると、ファイルやフォルダを簡単に指定することができます。
FileDialogプロパティ
FileDialogプロパティは、FileDialogオブジェクトを取得する場合に使用します。
FileDialogプロパティは、Applicationオブジェクト内に有ります。
また、FileDialogプロパティには、DialogType引数が有り、取得するFileDialogオブジェクトの種類を指定します。
指定出来るFileDialogオブジェクトの種類は、次のとおりです。
| (1) msoFileDialogFilePicker | ファイルを指定出来る[参照]ダイアログボックスを指定 | OK |
| (2) msoFileDialogFolderPicker | フォルダを指定出来る[参照]ダイアログボックスを指定 | OK |
| (3) msoFileDialogOpen | ファイルを指定出来る[ファイルを開く]ダイアログボックスを指定 | 開く(O) |
| (4) msoFileDialogSaveAs | ファイルを指定出来る[名前を付けて保存]ダイアログボックスを指定 | 保存(S) |
なお、次のShowメソッドによって取得された外部ファイルのフルパス名は、FileDialogプロパティのFileDialogSelectedItemsコレクションに格納されます。
Showメソッド
Showメソッドは、ファイルダイアログボックスを表示します。
Showメソッドは、アクションボタン或いは[キャンセル]ボタンのいずれかがクリックされた場合に、ファイルダイアログボックスを閉じ、クリックされたボタンの値をShowメソッドの返却値として返します。
なお、アクションボタンとは、FileDialogプロパティの指定出来るFileDialogオブジェクトの種類の表を参照のこと。
今回は、Sample_GetFileName()プロシージャに、次の処理を実装した例を掲載します。
※Sample_GetFileName()プロシージャは、任意の名前です。
Sample_GetFileName()プロシージャは、標準モジュールのModule1モジュール内に記述します。
- fdObject変数に、[参照]ダイアログボックス型のFileDialogオブジェクトを取得する。
- [参照]ダイアログボックス型のファイルダイアログボックスを表示する。
- 取得した外部ファイルのパス名を、指定のセルに書き込む。
なお、[参照]ダイアログボックス型のファイルダイアログボックスで、[キャンセル]ボタンをクリックした場合は、処理を中止します。
※コンパイルエラー等で、実行できない場合は、[参照設定]でMicrosoft Office 11.0 Object Libraryを指定してください。
《ソースコード》
Option Explicit
#Const DEBUG_VERSION = 1 ' 本番環境の場合は = 0
Sub Sample_GetFileName()
' ファイルダイアログを使用して、外部ファイルのフルパス名を取得
Dim fdObject As FileDialog ' FileDialogオブジェクトを格納する変数
Dim varSelectedItem As Variant ' 選択した項目を格納する変数
Dim lngCellCounter As Long ' セル行番号を格納する変数
Dim lngReturnCode As Long ' [参照]ダイアログの復帰コードを格納する変数
Set fdObject = Application.FileDialog(msoFileDialogFilePicker) ' [参照]ダイアログボックス型のFileDialogオブジェクトを作成する。
lngCellCounter = 1 ' 格納セルの先頭行番号を設定する。
With fdObject
lngReturnCode = .Show ' [参照]ダイアログボックスの表示する。
If (lngReturnCode = -1) Then ' [OK]ボタンをクリック
For Each varSelectedItem In .SelectedItems ' FileDialogSelectedItemsコレクション内をチェックする。
ActiveSheet.Range(Cells(lngCellCounter, 4), Cells(lngCellCounter, 4)).Value = varSelectedItem
lngCellCounter = lngCellCounter + 1
Next varSelectedItem
Else ' [キャンセル]ボタンをクリック
MsgBox "[キャンセル]ボタンがクリックされました。", vbOKOnly, "参照ダイアログ・キャンセル"
End If
End With
Set fdObject = Nothing 'オブジェクトの変数を開放する。
End Sub
ダウンロードはこちら。
※ご注意:ダウンロードされるExcelブックには、Excel VBAによるマクロが記述されています。
update:2010.01.31
□トップページに戻る。□
Copyright (C) 2009 - 2010 S.IKE