[[20171203091141]] 『フォルダ内にあるエクセルファイルの一覧表を作成』(ぱおー) ページの最後に飛ぶ

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

 

『フォルダ内にあるエクセルファイルの一覧表を作成したい』(ぱおー)

フォルダ内に、入っているエクセルファイルの一覧を作成したいです。

整理したいファイルは、
◯で、始まるファイル
★で、始まるファイル
★◯で、始まるファイル
⚫で、始まるファイル
☆で、始まるファイル
何も付いていないファイル

です。

フォルダの中のフォルダ全て検索して一覧にしたいです。
エクセルファイルは、基本的には『エクセルブック』というので保存されていますが
たまに、『97-2003エクセルブック』と言うのがあります。

検索したいフォルダを、指定して尚且つデータ場所も書き出せたら良いのですが。

 ファイル名            ファイル場所                  作成状況          フォルダ内名
 管理表ー1            管理表\データ1                   ◯                 ◯管理表ー1
 管理表ー2          管理表\データ2                  ★                  ★管理表ー2

フォルダ内のファイル名は、日々変わるのでこんな感じで管理表を作成したいです。

フォルダ1\フォルダ2\フォルダ3フォルダ4

くらい階層が、深いです。

ファイルの場所名は、フォルダ2からが良いです。

大きなくくりのフォルダ1の中に、100件近くのエクセルファイルがあり作成状況の
進捗を常に管理したいのです。

明日、一覧表を作成するのですがその他の作業もありなるべく時間をかけずに作成したいと思っています。

宜しくお願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


>その他の作業もありなるべく時間をかけずに作成したいと思っています。

こんな感じでできると思いますが、
コードを見て、何をしているかわからなければ、
汎用的に使えるフリーソフトの利用がよいかもしれません。

 Option Explicit

 Sub test()
    Dim ws As Worksheet
    Dim pfld As String
    Dim cfld As Object, f As Object
    Dim ファイル名 As String
    Dim ファイル場所 As String
    Dim 作成状況 As String
    Dim フォルダ内名 As String
    Const 進捗記号 As String = "[●○★☆]"

    Set ws = ActiveSheet

     With Application.FileDialog(msoFileDialogFolderPicker)
        If Not .Show Then Exit Sub
        pfld = .SelectedItems(1)
        ws.UsedRange.Offset(1).ClearContents
    End With

    With CreateObject("scripting.filesystemobject")
        For Each cfld In .getfolder(pfld).subfolders

            ファイル場所 = .getfolder(pfld).Name & "\" & cfld.Name

            For Each f In cfld.Files

                フォルダ内名 = .getbasename(f.Name)
                作成状況 = Mid(フォルダ内名, 1, 1)

                If 作成状況 Like 進捗記号 Then
                    If Mid(フォルダ内名, 2, 1) Like 進捗記号 Then
                        作成状況 = Mid(フォルダ内名, 1, 2)
                    End If
                Else
                    作成状況 = ""
                End If

               ファイル名 = Replace(フォルダ内名, 作成状況, "")

               ws.Range("a" & Rows.Count).End(xlUp).Offset(1).Resize(, 4).Value = _
                    Array(ファイル名, ファイル場所, 作成状況, フォルダ内名)

            Next
        Next
    End With

 End Sub

(マナ) 2017/12/03(日) 16:05


マナ様

ありがとうございます。

希望通りの動作確認できました。

でも、フォルダ内の全部がリストアップされてしまうので
エクセルのみの指定ってできますか?

エクセル以外のファイルは、テキストファイルと「.dwg」と「.bak」ファイルと「.xlsm」です。

この四つ以外で、と指定できれば「xls」と「xlsx」の二つが混ざっていても確実に
リストアップできるのかなと思っています。
(ぱおー) 2017/12/04(月) 08:38


以下が参考になると思います。
拡張子を判定する方法
http://officetanaka.net/excel/vba/tips/tips57.htm

(マナ) 2017/12/04(月) 19:33


コメント返信:

[ 一覧(最新更新順) ]


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