複数のファイルを結合するマクロを組んでいる中で、同一フォルダ内に有るファイルをDIR関数を使って名前を取得しています。DIR関数でファイル名を取得したときのファイルの順番がHDDの書き込み順番で有ることが分かりました。
過去の質問も捜してみましたが、上手く見つけることが出来ませんでした。
ファイルの作成日、もしくは、ファイル名称で順番に取得する手法はないでしょうか?Excelのシートに記載しないでマクロを動作させたいと考えております。
使用しているExcelは2003です。
皆様のお知恵を貸してください。よろしくお願いします。
No.5ベストアンサー
- 回答日時:
以前に似たような質問↓をしたことがあります。
(VBA) Dir 関数で取得するファイル一覧の順序
http://okwave.jp/qa2149125.html
(VBA) 配列の文字列を昇順で並べ替えたい
http://okwave.jp/qa2149727.html
参考になれば幸いです。^^
回答ありがとうございます。
この方法ですとシートを使用しなくて良いようですね。
VBAはあまり詳しくないので、手探りの状態です。
ネットでの検索が主な頼りとなっています。
困ったときにまた質問させてください。
ありがとうございました。
No.6
- 回答日時:
こんばんは。
FileSearch オブジェクトは、長い間、バグ付きでしたので、みなさんが敬遠して使わなかったようです。おそらく、Excelのバージョンではなく、OSの関係ではないか、と私は思っております。こちらは、Win XPで問題なく使えます。
この部分は、MS-DOSのワイルドカードの基準と違いますので注意が必要です。
.Filename = "t*"
Execute メソッドの引数で切り替えます。
msoSortByFileName 既定値
msoSortByLastModified
ただし、Excel2000 には、バグがあり、うまく動かない可能性が高いです。以下は、ヘルプをほとんど丸写ししただけです。
Sub DirFindMacro()
Dim i As Long
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path & "\"
.SearchSubFolders = False
.Filename = "t*"
.MatchTextExactly = True
.FileType = msoFileTypeOfficeFiles
'この部分で、オプションを切り替えます。 msoSortByFileName
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
'Cells(i, 1).Value = .FoundFiles(i) 'フルパス・ファイル名
Cells(i, 1).Value = Mid$(.FoundFiles(i), InStrRev(.FoundFiles(i), "\") + 1)
Next i
Else
MsgBox "検索条件を満たすファイルはありません。"
End If
End With
End Sub
なお、コマンドプロンプトのほうが簡単です。
例えば、
dir t*.xls /on
(名前順)
dir t*.xls /od
(日付順 昇順)
dir t*.xls /o-d
(日付順 降順)
もし、記録がほしいのでしたら、リダイレクトすればよいです。
例:
dir t*.xls /on >dirtext.txt
マクロで作る場合は、この出力ファイルをInput ステートメントなどで取得して取り出します。
エクセルからのコマンドプロンプト呼び出しが上手くできずあきらめていました。
コマンドプロンプトであればいろいろなオプションで昇順降順のソートが出来るのですが・・・VBAで同じことが出来なくて残念です。
コマンドプロンプトの呼び出しが出来るようにもう少し勉強します。
ありがとうございました。
No.4
- 回答日時:
ファイルが作成された順にアイテム番号のようなものが振られその順に、名前が抜き出されるのだと思います。
それなら
(1)自分で名前・作成日等を配列にファイル名や記憶し、自分でソートする。
(2)FaileSearchのような自分で実行して、終われば自分で、実行を引き継げるもので、ソートする
http://www.moug.net/tech/exvba/0060051.htm
などを使わざるを得ないでしょう。
上記で、mougがエクセル2000で解説しているので、2003では大丈夫でしょう。
ーー
これは
http://www2.moug.net/bbs/win/20070517000004.htm
http://www.atmarkit.co.jp/fwin2k/win2ktips/342xp …
フォルダ内のファイルの並び順序
とは別のことなのはお分かりと思います。
http://okwave.jp/qa2822648.html
この回答への補足
参考URLありがとうございました。
せっかくEXCELを使用しているのでシートを活用したほうが良いようですね。
ありがとうございました。
No.2
- 回答日時:
FileSearchを使えばシート上でソートしないで名前順などで
フォルダ内のファイル一覧を取得できます。
なかなか分かりやすいHPがないですね。
「FileSearch」「Application.FileSearch」
でネット検索してみてください。参考になると思います。
Sub test()
Dim Fol As String
Dim fso As FileSearch
Dim fmei As String
Dim i As Long
Dim myFile() As Variant
On Error GoTo er
Fol = CreateObject("Shell.Application").BrowseForFolder(0, "選択して下さい。 ", 0).self.Path
Set fso = Application.FileSearch
With fso
.NewSearch
.LookIn = Fol & "\"
.Filename = "*.*"
.Execute SortBy:=msoSortByName, _
sortorder:=msoSortOrderAscending
i = .FoundFiles.Count
ReDim myFile(i)
For i = 1 To .FoundFiles.Count
myFile(i) = .FoundFiles(i)
With Sheet1
fmei = Split(fso.FoundFiles(i), "\")(UBound(Split(fso.FoundFiles(i), "\")))
fmei = Split(fmei, ".")(0)
.Cells(i, 1).Value = fmei
.Cells(i, 2) = _
FileDateTime(fso.FoundFiles(i))
End With
Next
End With
Exit Sub
er:
AppActivate Application.Caption
MsgBox "中止"
End Sub
No.1
- 回答日時:
作成時刻などは、下記URLから API関数( GetFileInformationByHandle )を使用して 得ることが、できます。
他にも、ありますので、調べてください。
API別 Win32 サンプル集
http://nienie.com/~masapico/api_index.html
GetFileInformationByHandle オープンしているファイルの情報取得
http://nienie.com/~masapico/api_GetFileInformati …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA ファイル取得について フォルダの中に、ファイル名“会議“を含むファイルが1つまた 9 2022/10/12 01:18
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- Visual Basic(VBA) VBA GetAttrについて教えてください 2 2022/12/22 15:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaサブフォルダーをワイルドカ...
-
excel マクロ PDF化の際のエラ...
-
動かなくなってしまった古いVBA...
-
ExcelVBA 文字コード変換
-
VBAでのファイル名と更新日(作...
-
サブフォルダ含むフォルダ内の...
-
vbsでのアスタリスクとファイル...
-
FileDialog オブジェクトでファ...
-
VBA、ファイル名検索から開く、...
-
MAPIコントロールでファイル添...
-
VBからExcelファイルを開くとき...
-
エクセルのVBAで開いている...
-
ffftpでファイル取得が0バイト...
-
Wordのプロパティ・総ページ数...
-
「エクセルファイルが開いてい...
-
複数のワークブックのVBAを変更...
-
ファイルを開く時間測定のスク...
-
VBAでフォルダ内のhtmlファイル...
-
VB6でUTF-8ファイルの読取りを
-
ファイルを複数選択した時のフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動かなくなってしまった古いVBA...
-
FileDialog オブジェクトでファ...
-
VBA ファイル名取得
-
VBAでフォルダ内のhtmlファイル...
-
excel マクロ PDF化の際のエラ...
-
vbsでのアスタリスクとファイル...
-
「エクセルファイルが開いてい...
-
ffftpでファイル取得が0バイト...
-
vbaサブフォルダーをワイルドカ...
-
ExcelVBA 文字コード変換
-
Accessのウインドウサイズの固定
-
サブフォルダ含むフォルダ内の...
-
VBからExcelファイルを開くとき...
-
VB6でUTF-8ファイルの読取りを
-
【VBAマクロ初心者】Excel VBA...
-
「AccessViolationException」...
-
エクセルのVBAで開いている...
-
Wordのプロパティ・総ページ数...
-
更新日が指定日以降のファイル取得
-
コモンダイアログでフォルダを...
おすすめ情報