人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL マクロファイル名をソートしてVarType配列にいれる。

Application.GetOpenFilenameで複数のCSVファイルの読み込みをする際に、
ファイル名をソートして VarType(vFiles)に入れてその後の処理に渡したいのですが、
どの様にマクロを作成したらよいかご教授お願い申し上げます。

ソートしたいCSVのファイル名は、以下の仕様です。

****CLS01.CSV
****CLS02.CSV


****CLS50.CSV
注:****部分は可変長で最大51文字、最小で6文字です。

Sub cmdEnter_Click()


vFiles = Application.GetOpenFilename("検査結果CSVファイル,*.csv", , _
"集計したい検査結果のファイルを指定して下さい。(複数選択可)", , True)
If VarType(vFiles) <> vbVariant + vbArray Then
Exit Sub 'キャンセル


’”ここでファイル名をソート?”

end if

end sub

●質問者: hawk007
●カテゴリ:コンピュータ
✍キーワード:application CSV Excel EXIT sub
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●27ポイント

文字列をソートするような関数を作ればいいです。

>|vb|

'”ここでファイル名をソート?”

Call StrSort(vFiles)

'テスト

For i = 1 To UBound(vFiles)

Debug.Print vFiles(i)

Next

End Sub

Sub StrSort(h As Variant)

Dim i As Integer

Dim j As Integer

Dim s As String

For i = LBound(h) To UBound(h) - 1

For j = i + 1 To UBound(h)

If StrComp(h(i), h(j), vbTextCompare) > 0 Then

s = h(i)

h(i) = h(j)

h(j) = s

End If

Next

Next

End Sub

||<

http://q.hatena.ne.jp/


2 ● heke2mee
●2ポイント

VBAでのソート方法はこちらのサイトが参考になると思います

http://chotosplus.sakura.ne.jp/wordpress/2009/07/16/excel-vba%E3...


3 ● SALINGER
●80ポイント ベストアンサー

****の部分がファイル毎に違う場合は次のようにしてください。

>|vb|

'”ここでファイル名をソート?”

Call StrSort(vFiles)

For i = 1 To UBound(vFiles)

Debug.Print vFiles(i)

Next

End Sub

Sub StrSort(h As Variant)

Dim i As Integer

Dim j As Integer

Dim s As String

For i = LBound(h) To UBound(h) - 1

For j = i + 1 To UBound(h)

If StrComp(Right(h(i), 6), Right(h(j), 6), vbTextCompare) > 0 Then

s = h(i)

h(i) = h(j)

h(j) = s

End If

Next

Next

End Sub

||<

http://q.hatena.ne.jp/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ