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

VBAで、選択したフォルダに含まれるファイル一覧を、リストボックスに表示させたいのですが、
連番を使ったファイル名によって、きっちり並ぶようにしているのですが、並びません。
使用するパソコンによって変わるような気がするのですが、
順番は不定で、気まぐれなのですか?
リストに格納される前のFileDialogにてファイルの順番を指定する方法は
ないのでしょうか。

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
strFolder = .SelectedItems(1)
Set myFolder = myFSO.GetFolder(strFolder)
Set myFiles = myFolder.files
targetFolder = strFolder 'myFolder.name
txtFolder.Value = strFolder
i = 0

'一旦初期化
fileAry = Split("")
lstFile.Clear

For Each myFile In myFiles
If IsExcel(myFile.name) = True Then
ReDim Preserve fileAry(i)
fileAry(i) = myFile.name
i = i + 1
End If
Next
End If
End With

●質問者: kyoko55
●カテゴリ:コンピュータ
✍キーワード:application name NeXT SET VBA
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● degucho
●30ポイント

取得時のFilesコレクションもFor Eachで取り出すときも

仕様上順序は定められていないので、保証したいなら

自前で配列をソートしないとダメだと思います。

OSが2000/XP混在であれば↓が影響しているかもしれません。

http://support.microsoft.com/kb/319827/ja

◎質問者からの返答

自前で用意いなければならないのですね。

ありがとうございました。


2 ● mattn
●35ポイント

ソートされていないからかと思います。

Sub MySort(ByRef a)
 Dim i, tmp
 For i = 0 To UBound(a) - 1
 Dim j
 For j = i + 1 To UBound(a) - 1
 If a(j) < a(i) Then
 tmp = a(j)
 a(j) = a(i)
a(i) = tmp
 End If
 Next
 Next
End Sub

こんなソート関数で

Call MySort(fileAry)

としてあげれば、うまく並ぶかと思います。

◎質問者からの返答

ありがとうございます。

わざわざ作成していただきまして、ありがとうございました。

やってみます。

うまくいきました。


3 ● Mook
●35ポイント ベストアンサー

このあたりの使用は OS のバージョンによっても異なったりしますので、

並べ替え処理を入れてみてはどうでしょう。



下記のような処理を用意して、

Sub strSort(fileArray)
 For i = LBound(fileArray) To UBound(fileArray) - 1
 For j = i + 1 To UBound(fileArray)
 If StrComp(fileArray(i), fileArray(j), vbTextCompare) > 0 Then
 tmp = fileArray(i)
 fileArray(i) = fileArray(j)
 fileArray(j) = tmp
 End If
 Next
 Next
End Sub

ファイル名の配列を作成後

  :
  :
  For Each myFile In myFiles
   If IsExcel(myFile.name) = True Then
    ReDim Preserve fileAry(i)
    fileAry(i) = myFile.name
    i = i + 1
   End If
  Next
 End If
 End With

 strSort fileAry

のように実行してみてどうでしょうか。

◎質問者からの返答

ありがとうございます。

わざわざ作成していただきまして、ありがとうございました。

やってみます。

うまくいきました。

関連質問


●質問をもっと探す●



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