|
こんにちは
▼最近汗かき さん:
>あるフォルダ内に
>年月日時分秒を名前にもつファイルが以下のようにあり
>06_08_27_01_02_03_AAA.txt
>06_08_27_02_03_04_AAA.txt
>06_08_27_03_04_05_AAA.txt
>…
>それらの中身を一つのファイルにまとめたいのですが
Inputステートメントで読み込みながら、Printステートメントで書き出し。
>ファイルを選択した順番ではなく
フォルダ内すべてのファイルが対象ではなく選択するということでしょうか。そう
でしたら、GetOpenFilename メソッドでMultiSelect=True。
すべてが対象またはワイルドカードで指定可能ならDir関数。
>複数のファイルの中から作成時間を判断して
>古いものから順にまとめていきたいのです。
得られたファイル名の配列を並べ替えてから順に処理。
ファイル名に時間の情報があるならそのままファイル名を基準に並べ替え。
信頼できないなら、ぱっせんじゃーさんご提示の方法で更新日時を得る。
並べ替え処理については、ワークシート上に書き出して並べ替える、もしくは下記
プロシージャを使い配列をそのまま並べ替える。
>そのようなことは可能でしょうか?
と、こんな感じで可能でしょう。^d^
Private Function Csort(ByVal Target As Variant) As Variant
'昇順並べ替え、引数は1次元配列のみ可。
Dim L As Long
Dim U As Long
Dim i As Long
Dim gap As Long
Dim Temp As Variant
Dim F As Boolean
L = LBound(Target)
U = UBound(Target)
gap = U - L
F = True
Do While gap > 1 Or F = True
gap = Int(gap / 1.3)
If gap = 9 Or gap = 10 Then
gap = 11
ElseIf gap < 1 Then
gap = 1
End If
F = False
For i = L To U - gap
If Target(i) > Target(i + gap) Then
Temp = Target(i)
Target(i) = Target(i + gap)
Target(i + gap) = Temp
F = True
End If
Next
Loop
Csort = Target
End Function
|
|