Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39869 / 76738 ←次へ | 前へ→

【41975】Re:テキストファイルをまとめたい。
回答  だるま WEB  - 06/8/27(日) 16:32 -

引用なし
パスワード
   こんにちは

▼最近汗かき さん:
>あるフォルダ内に
>年月日時分秒を名前にもつファイルが以下のようにあり
>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

0 hits

【41972】テキストファイルをまとめたい。 最近汗かき 06/8/27(日) 14:38 質問
【41973】Re:テキストファイルをまとめたい。 ぱっせんじゃー 06/8/27(日) 14:51 発言
【41975】Re:テキストファイルをまとめたい。 だるま 06/8/27(日) 16:32 回答

39869 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free