アルパカのメモ

ファイルを開く&保存するダイアログ

はじめに

VBA でファイルを指定するダイアログを表示する方法はいくつかあるが、 一番柔軟性があるのは Application.FileDialog だと思われる。

Excel の Application オブジェクトに付いているプロパティで、Outlook の Application オブジェクトにはない。 そのため、Outlook VBA でファイル選択ダイアログを使いたい場合、Excel.Application オブジェクトを生成して使う必要がある。

サンプル

Public Sub Sample1()
    Dim oDialog As FileDialog
    Dim iAction As Integer
    
    ' 実際は String 型が入る。For Eachで使う関係上 Variant で定義
    Dim vSelectedItem As Variant
    
    
    Set oDialog = Application.FileDialog(msoFileDialogFilePicker)
    
    oDialog.InitialFileName = "C:\test\"  ' 既定のフォルダを指定する
    
    iAction = oDialog.Show  ' ダイアログを表示する
    
    ' Showの戻り値が -1 の時がユーザーが「開く」ボタンを押したとき。
    '  キャンセルされた場合は 0
    If iAction <> -1 Then
        Set oDialog = Nothing
        Exit Sub
    End If
    
    For Each vSelectedItem In oDialog.SelectedItems
        Debug.Print vSelectedItem
    Next
    
    Set oDialog = Nothing
    
End Sub