ray88’s diary

お仕事で困ったとき用の自分用の覚書

フォルダ内の特定ファイル特定シート特定セルの値を集計3

Option Explicit
Sub クリア()
    Dim lastRow As Integer
    With ThisWorkbook.Sheets("マスタ")
        lastRow = .Cells(Rows.Count, 4).End(xlUp).Row
        .Range(Cells(7, 5), Cells(lastRow, 9)).ClearContents
        .Range("D2:D4").ClearContents
        .Range("E3:F3").ClearContents
    End With

End Sub
Sub ファイルパス選択()
    Dim FilePath As String
    Dim strType As String
    strType = "ファイル"
    
    FilePath = getFilePath(strType)
    ThisWorkbook.Sheets("マスタ").Cells(3, 4) = FilePath

End Sub
Sub フォルダパス選択()
    Dim FilePath As String
    Dim strType As String
    strType = "フォルダ"
    
    FilePath = getFilePath(strType)
    ThisWorkbook.Sheets("マスタ").Cells(4, 4) = FilePath
End Sub

Function getFilePath(strType As String) As String

    Dim objDialog As FileDialog  'FileDialogオブジェクト格納用変数
    
    'ファイルパスを取得する場合
    
    If strType = "ファイル" Then
        Set objDialog = Application.FileDialog(msoFileDialogFilePicker)
    Else
        'フォルダパス取得の場合はこちら
        Set objDialog = Application.FileDialog(msoFileDialogFolderPicker)
    End If
        
    '点線で囲った部分は設定の必要がなければコメントアウトして使用する
    '-------------------------------------------------------------------------
    If strType = "ファイル" Then
        '初期表示されるファイル名またはフォルダ名を指定
        objDialog.InitialFileName = "C:\Users\cryst\OneDrive\デスクトップ\テスト"
        'ダイアログボックスの「ファイルの種類」に適用されるフィルタを設定
        objDialog.Filters.Clear
        'フィルターリストの1番目
        objDialog.Filters.Add "エクセル", "*.xlsx", 1
        'フィルターリストの2番目
        objDialog.Filters.Add "すべてのファイル", "*.*", 2
        'リストで1番目に設定したファイルの種類がダイアログボックスを
        '開いた時に表示される
        objDialog.FilterIndex = 1
    End If
    '-------------------------------------------------------------------------
    'Showメソッドの戻り値が「-1」のときはTrue(ファイルが選択された時)
    '「0」のときはFalse(ファイルが選択されなかった時)
    If objDialog.Show Then
        'ファイルが選択された時は変数に選択されたファイルのパスを格納
        getFilePath = objDialog.SelectedItems(1)
        'デバック用
        'Debug.Print targetPath
    Else
        If strType = "ファイル" Then
            MsgBox "ファイル選択をキャンセルしました"
        Else
            MsgBox "フォルダ選択をキャンセルしました"
        End If
    End If
    'オブジェクト変数を解放
    Set objDialog = Nothing
    
End Function

ray88.hatenablog.com
ray88.hatenablog.com