[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『フォルダ内にあるエクセルファイルの一覧表を作成したい』(ぱおー)
フォルダ内に、入っているエクセルファイルの一覧を作成したいです。
整理したいファイルは、
◯で、始まるファイル
★で、始まるファイル
★◯で、始まるファイル
⚫で、始まるファイル
☆で、始まるファイル
何も付いていないファイル
です。
フォルダの中のフォルダ全て検索して一覧にしたいです。
エクセルファイルは、基本的には『エクセルブック』というので保存されていますが
たまに、『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
(マナ) 2017/12/04(月) 19:33
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.