№06. Excel VBA-[ファイルダイアログを使用して、外部ファイルのフルパス名を取得する | GTZ&RSのブログ

GTZ&RSのブログ

GT-Z&RSでは、コンピュータ関連情報や地域情報を中心に発信しています。

№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

update:2010.01.31

Copyright (C) 2009 - 2010 S.IKE