ちょっと先の未来クイズ第4問

VBAは本を入門書を読み始めたばかりの初心者です。

一つのフォルダ内にエクセルファイルとcsvファイルが混在(400くらいずつ)あります。このうちエクセルファイルのみ降順で並べ替えをしたいと思います。データの範囲はA1:I501で1行目は見出しでA列は日付が入っているのですが、日付が昇順で入っているため日付を基準にして降順にしたいです。全てのファイルにシートは一つしかありません。

マクロの記録で作成したところ

Sub 並べ替え降順()
'
' 並べ替え降順 Macro
'

'
Columns("A:A").ColumnWidth = 10.63 '先ずA列の幅を整える
Range("A1:I501").Select
ActiveWorkbook.Worksheets(1).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(1).Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(1).Sort
.SetRange Range("A2:I501")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

こんな感じになったのですが、これをフォルダ内の全てのエクセルファイルにおなじ処理をするにはどうしたらよいのでしょうか?詳しい方いらっしゃいましたらどうぞよろしくお願いします。

A 回答 (2件)

エクセルVBAのことだとすると、マクロの記録が取れるのは、エクセルのシートの操作が中心。


フォルダやファイルを扱うような場面はエクセルのマクロの記録の取れる範囲ではない。
それも経験して無い・わかってない人が、質問の課題をするのは速すぎる。
内容的には、ソートなどの処理も必要で、有名とはいえ、ソートを自作するのは初心者には
大変。
(1)在るフォルダの中のファイル(名)を捕まえる方法(Dir関数やFSOを使う方法)
  (3)ならシートにファイル名(ブック名)を書き出すコード
(2)エクセル・ファイルだけを選別するコード
(3)ファイル名のソート(シート上エクセルのソートを使って(VBAで)でやるか)
(4)並び順は具体的に判ったとして、フォルダ内の見てくれをその順序にする方法(コード)
必要性の中身について、場合によったら、(3)からそのファイル名で順にファイルを読みに行き、
オープンしてシートのセルの中身を見て、何か思っている処理をするとか。(4)を避ける。
OSがらみのファイルを表示する仕組みで並べ替えが出来たとしても、VBAでは扱える
ことにはならないので、考えを飛躍させないように。
ーー
作るとなると、色々勉強が必要だが、それ向きのフリーのソフトでもないか、一応探すとか。
ーー
Googleででも「ファイルの表示 順序」で照会し記事を読んで考えたら。色々前提知識が要る
ことがわかるだろう。
    • good
    • 0

VBAはファイル内の処理の為、質問者さんがやりたいことをするには、VBなどの別プログラムでコーディングしなければなりませんよ。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報