[[20171202142239]] 『ファイル名指定について』(わかこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ファイル名指定について』(わかこ)

いつも勉強をさせていただいております。

早速ですが、以下のコードにてファイル名を抽出しております。
このコードは指定のディレクトリを入力し、ファイル名を抽出しておりますが、
ユーザーがパスを入力するのではなく、コマンドが開き任意のフォルダを選択するようにしたいです。
当方VBAについて殆ど知識がない為、色々調べてみましたが分かりませんでした。
こうすると出来る、とコードを表示いただけると大変助かります。
よろしくお願いいたします。

Sub MakeFileList()

    Target = InputBox("ディレクトリ名を入力", "ディレクトリの指定", "C:\Windows")

    Set FS = CreateObject("Scripting.FileSystemObject")
    Set Fol = FS.GetFolder(Target)
    Set Fil = Fol.Files
    ThisWorkbook.Sheets("Sheet1").UsedRange.Delete

    '見出しを付ける
    ThisWorkbook.Sheets(1).Range("B2") = "ファイル名"
    ThisWorkbook.Sheets(1).Range("C2") = "ファイル種別"
    ThisWorkbook.Sheets(1).Range("D2") = "最終更新日"
    ThisWorkbook.Sheets(1).Range("E2") = "説明"
    ThisWorkbook.Sheets(1).Range("B2:E2").Interior.Color = RGB(0, 0, 0)
    ThisWorkbook.Sheets(1).Range("B2:E2").Font.Color = RGB(255, 255, 255)
    ThisWorkbook.Sheets(1).Range("B2:Es2").HorizontalAlignment = xlCenter

    i = 3
    For Each Fx In Fil
        'ファイル名
        sFile = Fx.Name
        'ファイル名の書き出し
        ThisWorkbook.Sheets(1).Cells(i, 2) = sFile
        'ファイル種別
        sFType = Fx.Type
        '最終更新日時の書き出し
        ThisWorkbook.Sheets(1).Cells(i, 3) = sFType
        '最終更新日
        sLMod = Fx.DateLastModified

        ThisWorkbook.Sheets(1).Cells(i, 4) = sLMod
        i = i + 1
    Next

< 使用 Excel:Excel2007、使用 OS:Windows7 >


フォルダを選択するダイアログ
http://officetanaka.net/excel/vba/tips/tips39.htm

(マナ) 2017/12/02(土) 14:38


マナ様、レスポンスをありがとうございます。
以下コードにしたところ、「ターゲットまたは引数が不正です」となりました。
そうであろうと・・・とは思うのですが、どう訂正すればよいのか分かりません。
大変申し訳ないのですが、どのようにすれば良いのかご教示いただけないでしょうか。
おんぶにだっこで申し訳ないのですが、お助けいただけると助かります。

Sub MakeFileList()

     With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            MsgBox .SelectedItems(1)
        End If
    End With

    Set FS = CreateObject("Scripting.FileSystemObject")
    Set Fol = FS.GetFolder(Target)
    Set Fil = Fol.Files
    ThisWorkbook.Sheets("Sheet1").UsedRange.Delete

    '見出しを付ける
    ThisWorkbook.Sheets(1).Range("B2") = "ファイル名"
    ThisWorkbook.Sheets(1).Range("C2") = "ファイル種別"
    ThisWorkbook.Sheets(1).Range("D2") = "最終更新日"
    ThisWorkbook.Sheets(1).Range("E2") = "説明"
    ThisWorkbook.Sheets(1).Range("B2:E2").Interior.Color = RGB(0, 0, 0)
    ThisWorkbook.Sheets(1).Range("B2:E2").Font.Color = RGB(255, 255, 255)
    ThisWorkbook.Sheets(1).Range("B2:Es2").HorizontalAlignment = xlCenter

    i = 3
    For Each Fx In Fil
        'ファイル名
        sFile = Fx.Name
        'ファイル名の書き出し
        ThisWorkbook.Sheets(1).Cells(i, 2) = sFile
        'ファイル種別
        sFType = Fx.Type
        '最終更新日時の書き出し
        ThisWorkbook.Sheets(1).Cells(i, 3) = sFType
        '最終更新日
        sLMod = Fx.DateLastModified

        ThisWorkbook.Sheets(1).Cells(i, 4) = sLMod
        i = i + 1
    Next
End Sub

(わかこ) 2017/12/02(土) 14:52


ちゃんと変数宣言する習慣をつけて、
各変数の意味を理解するようにしたほうがよいです。
たとえ、他の人のコードをコピペでそのまま使う場合でも。

     With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            Target = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With

(マナ) 2017/12/02(土) 17:02


マナ様レスポンスありがとうございました。
仰る通りです。
勉強いたします。
お手数いただき、ありがとうございました。
(わかこ) 2017/12/02(土) 17:40

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.