VBA備忘録

VBAソースの備忘録。当面Excelのみ。

Dialogでフォルダを指定

読み込む、または保存などで、任意のフォルダを指定する

 

前提条件

  • Dialogを表示し、フォルダを指定する
  • Dialog上でキャンセルボタンを押下した場合は、処理を行わない
  • 初期表示DialogはActiveWorkBookのフォルダか否か選べる

 

仕様

  • 初期表示Dialogに指定するフォルダがある場合は引数に持たせる。持たせない場合はActiveWorkBookのフォルダになる
  • キャンセル押下時は返値(選択フォルダパス)が空欄(””)

 

 

'------------------------------------------------------
'Dialogを表示し任意のフォルダを取得
'
'   戻値:選択フォルダパス
'
'   引数:アクティブブックフォルダフラグ(省略時False)
'-------------------------------------------------------
Function GetFolderUseDialog(Optional strInitPath As String = "") As String

    Dim strSelecedtFolder As String '取得フォルダ名
    
    strSelecedtFolder = ""

    'msoFileDialogFolderPickerを使用
    With Application.FileDialog(msoFileDialogFolderPicker)
    
        'もし引数がない場合、アクティブワークブックが格納されているフォルダDialogが初期表示される
        '引数がある場合、そのフォルダを初期表示する
        If strInitPath = "" Then
            .InitialFileName = ActiveWorkbook.Path
        Else
            .InitialFileName = strInitPath
        End If
        
        'Dialogが表示され、OKを押下したら値を返す
        If .Show = True Then
            strSelecedtFolder = .SelectedItems(1)
            
        End If
        
    End With
    
    GetFolderUseDialog = strSelecedtFolder

End Function

 

 

呼び出し方

Sub test()

    Dim strFileName As String
    
    strFileName = ""
    
    strFileName = GetFolderUseDialog("C:\temp") '初期表示Dialogを指定

【または】
    strFileName = GetFolderUseDialog() '初期表示Dialogを未指定=ActiveWorkBookのフォルダが表示
    
    If strFileName = "" Then
         '未選択時の処理
    Else
         '選択時の処理
    End If
    
End Sub

 

 

初期表示Dialogを指定した場合 C:\tempが初期表示

初期表示Dialogを指定しなかった場合 ActiveWorkBookのフォルダが表示