kunkoh
@kunkoh

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VBAのファイルダイアログでフォルダ選択時にファイルを確認したい

解決したいこと

VBAでフォルダのパスを取得し、Dir関数ですべてのファイルを
取得したいと考えています。

最終的にすべてのファイルを取得したいので、
FileDialog(msoFileDialogFolderPicker)でフォルダを選択するときに
ファイルを確認しながら作業を行いたいです。

また、BrowseForFolderは使いづらいため、あまり使用したくありません。
なにか助言をいただきたいです、よろしくお願いいたします。

コード例

Sub main()
   With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Select Folder"
        If .Show = True Then
             Debug.Print .SelectedItems(1)
        End If
    End With
End Sub

0

1Answer

VBAのFileDialogで
フォルダを選択するときにファイルが存在するか確認をした上で
フォルダのパスを取得して、すべてのファイルを取得したい
…で合っていますかね?

msoFileDialogFilePicker なのでフォルダ以外を指定してください
すべてのファイルを取得したいということで
フォルダ内にファイルが無い場合を考慮してないです

Sub test()

With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Select File"
    ' 開くボタンを押した
    If .Show = True Then
        ' フルパスを取得
        Dim FullPath As String
        FullPath = .SelectedItems(1)
        ' InStrRevでフォルダパスを取得
        Dim cnt As Integer
        cnt = InStrRev(FullPath, "\")
        FolderPath = Left(FullPath, cnt - 1)
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set FolderPath = FSO.GetFolder(FolderPath)
        ' ファイルを取得
        For Each f In FolderPath.Files
            Debug.Print (f.Name) ' ファイルの名前
            'Debug.Print (f.PATH) ' ファイルのパス
        Next
        '
        '
        ' 他に処理があれば書く
        '
        '
    End If
End With

End Sub
0Like

Comments

  1. @kunkoh

    Questioner

    回答いただきありがとうございます。
    ファイルを選択してフォルダのパスを受け取るのですね。

    大変参考になりました。

Your answer might help someone💌