あるフォルダ内のファイルを名前順で読みたいのですが、
読み取り順を操作することは可能ですか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは


#1,#2さんのとおりそのままではできないと思います。
私はファイル名で並べ替えるときは、Sorted=Trueにした「リストボックス」にAdditemしていって、取得してからIndex順に読みます。
ファイル名を取得するロジックはサンプルにあったと思います。
ちなみにサイズや更新日順の場合は配列に入れてソートするようにしています。
では!
    • good
    • 1

DirやFindFirstFileでは出来ないです。


フォルダ内のファイル名をすべて取得した後に並び替えるしか
ないと思います。
# APIやOCXでその機能を実装しているのが、あるかもしれません。
    • good
    • 0

こんにちは。

maruru01です。
Dir関数では多分出来ない(というか私には分からない)と思います。
したがって私は、フォルダ内の全ファイル名を配列とかにしておいて、それを並べ替えるという方法を採っています。
並べ替えた後で、配列のIndexでループを回して何かの処理をするという手順です。
では。
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「お気に入り」をアルファベット順に並べるには

Windows Internet Explorerの「お気に入り」をアルファベット順に並べるには、どうすればいいのでしょうか。普通は、作成順に並んでしまってフオルダが多くなると不便です。

また、Outlook Expressの「禁止者リスト」をアルファベット順にはできないのでしょうか。

Aベストアンサー

「お気に入りの整理」ウインドウを出してウインドウ内のフォルダを右クリックし「名前順出並べ替え」を選択すればOKです。

Qフォルダ内にさらにフォルダがあるか知りたい

Windows2000
VB6
で開発をしています。

フォルダ内にあるフォルダ名称だけを取得することって出来るのでしょうか?
フォルダ内のファイル数が多く、一つずつ確認するのでは時間がかかりそうなので、
もっと簡単に早くできる方法がないか模索中です。

よろしくお願いします。

Aベストアンサー

こんな感じでよいですか?
Sub test()
Set fold = CreateObject("Scripting.FileSystemObject")
folder_name = "c:\"
Set folder1 = fold.GetFolder(folder_name)
Set sub_folders = folder1.subfolders
For Each sub_folder In sub_folders
MsgBox (sub_folder.Name)
Next

End Sub

Qアルファベットの並び順の意味

英語のアルファベットの並び順は
ABCDEFGHIJKLMNOPQRSTUVWXYZ
となっていて、母音と子音が分かれているでもなく調音位置の順に並ぶでもなく有声音無声音もばらばらです。
ギリシャ文字やキリル文字もほとんど同じ並び順ですが、この並び順に何か意味や必然性はあるのでしょうか?

Aベストアンサー

五十音、ハングル、デーヴァナーガリーなどは音節文字(音節が単位)で、ラテン文字、ギリシャ文字、キリル文字などの音素文字(一文字が音節を表さない)とは文字体系が違うからです。(一般的に文字の類型には三種類あって、上に挙げた音節文字と音素文字のほかに漢字などの表意文字があります)。

ちなみに日本語の五十音図の配列はインドの影響が強いです。インドのサンスクリットが中国を経由して仏教と共に日本に伝えられ、悉曇学(インドの音声に関する学問)が活発になりました。インド系文字は現在でもインド・東南アジアで広く使われています。インド系文字の祖先はブラーフミー文字といって、音節をベースにしていますので、ヨーロッパのセム語系のアルファベットを基礎としたアルファベットとは根本的に構造が違います。例えばフェニキア文字は母音を表す文字が無かったように、音節をベースにしてはいません。
http://www.aa.tufs.ac.jp/i-moji/(インド系文字について)

ハングルも1字が1音節を表す文字です。1446年に李朝第四代世宗が漢字が不便であると理由から制定したもので、音節をベースにしています。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%B0%E3%83%AB(ハングルについて)

また、フェニキア文字の並び順に必然性があったかを知ることは、史料が少ない点からも難しいと思います。

かなり大雑把に書いてしまいましたが、参考になれば幸いです。

五十音、ハングル、デーヴァナーガリーなどは音節文字(音節が単位)で、ラテン文字、ギリシャ文字、キリル文字などの音素文字(一文字が音節を表さない)とは文字体系が違うからです。(一般的に文字の類型には三種類あって、上に挙げた音節文字と音素文字のほかに漢字などの表意文字があります)。

ちなみに日本語の五十音図の配列はインドの影響が強いです。インドのサンスクリットが中国を経由して仏教と共に日本に伝えられ、悉曇学(インドの音声に関する学問)が活発になりました。インド系文字は現在で...続きを読む

Qエクセルのマクロであるフォルダ内にある全エクセルファイルのシート1!(

エクセルのマクロであるフォルダ内にある全エクセルファイルのシート1!(A1:X365)の値を取得し、コピー元のエクセルファイル名のシートに貼付ける方法を教えて頂けないでしょうか?できればコピー元のエクセルファイルは開かずに実行させたいです。エクセルは2003を使っています。

Aベストアンサー

 おはようございます。DOUGLAS_ です。

>「A1:X365」という読み込み範囲を指定する
>SQL文 の書き方が分かりませんでしたので、・・・
 前回答の 参照URL に書いてありました。  (;^_^A

 前回答の下記2点を訂正していただければ結構です。

1)
myRS.Open "select * from [Sheet1$]", myCon

myRS.Open "select * from [Sheet1$A1:X356]", myCon
に差し替え。

2)
Range(Range("Y1"), Cells(1, Columns.Count)).EntireColumn.ClearContents
Range(Range("A366"), Cells(Rows.Count, 1)).EntireRow.ClearContents
の2行を削除。


 なお、ご存じかとは存じますが、「参照設定」というのは、Visual Basic Editor(VBE)で
1)[ツール(T)] - [参照設定(R)...] で、[参照設定 - VBProject] ダイアログ を開きます。
2)[参照可能なライブラリ ファイル(A):] の下の一覧の中から「Microsoft ActiveX Data Objects 2.x Library」というような文字列の書かれた項目の前の チェックボックス を オン にします。
 私の環境では「2.x」の部分が「2.0」・「2.1」・「2.5」・「2.6」・「2.7」・「2.8」と 6通り ありましたので、番号の一番大きな「2.8」に参照設定しました。
3)最後に [OK] を クリック して、[参照設定 - VBProject] ダイアログ を閉じます。

 なお、私の書いた マクロ は、マクロ が書かれた ブック には、何も変化はありません。
 新規ブック を開いて、そこに データ を読み込み、別名で保存するようにしてあります。

>最終的に私がやりたいことは60ある同一フォームのエクセルファイルの、
>A1からX365に入力された数値を
>それぞれのセル位置ごとにマスターのファイルで合計を出したい
とのことですが、「60ある同一フォームのエクセルファイル」は、同じ フォルダ に入っていることが要件です。

 VBA の知識がおありでしたら、私の書いた マクロ を適当に手直ししてくだされば、複数の フォルダ からの読み込みもできるようになります。
 では、ご健闘をお祈りします。  <(_ _)>

 おはようございます。DOUGLAS_ です。

>「A1:X365」という読み込み範囲を指定する
>SQL文 の書き方が分かりませんでしたので、・・・
 前回答の 参照URL に書いてありました。  (;^_^A

 前回答の下記2点を訂正していただければ結構です。

1)
myRS.Open "select * from [Sheet1$]", myCon

myRS.Open "select * from [Sheet1$A1:X356]", myCon
に差し替え。

2)
Range(Range("Y1"), Cells(1, Columns.Count)).EntireColumn.ClearContents
Range(Range("A366"), Cells(Rows.Count, 1)).EntireRow...続きを読む

Qアルファベット順に並べるソフトウェア

現在、自分なりの英語の単語集をexcelに作っていますが、単語をアルファベット順に整序する機能がないため検索に時間がかかります。入力した単語をアルファベット順に並べるようなソフトウェアはないものでしょうか?ご助言を賜りたいと思います。

Aベストアンサー

ExcelのデータならExcelで並べ替えするのが一番簡単です。

データ形式は何でしょう?

参考URL:http://homepage2.nifty.com/joho-ka/excel/xl6.htm

Qエクセルvbaで特定フォルダに3つのcsvファイルがあり、それを読み込んで一つのブック内に3つのワー

エクセルvbaで特定フォルダに3つのcsvファイルがあり、それを読み込んで一つのブック内に3つのワークシートとしたいです。 簡単そうで、難しいです。ネットのサンプルプログラムもあまり参考になりませんでした。vbaは初心者です

Aベストアンサー

スマホなんでコードは無理ですが。

csv読み込むたびにシート作成したらいいんじゃないの?

とりあえず、処理の順序を日本語で置き換えることは出来ますか?

QPicasa3。ファイルを名前順(アルファベット順)に表示したい。

Picasa3にて写真を表示する際,ファイルの表示順を名前順(アルファベット順)にする方法を教えてください。
フォルダはの順序は,「表示→フォルダ表示→名前で並べ替え」で上手く行ったのですが…。

Aベストアンサー

ライブラリ表示(サムネイルの一覧表示)の状態で、画像の間の余白を右クリックすると出てくるコンテキストメニュー>真ん中あたりの「画像の並べ替え>「名前」でできます。
ちなみに逆順にするには、シフトを押して同じ操作を行います。

Q【vbs】特定のフォルダにあるファイルをソフトに読み込ませたい

お世話になります。
vbs初心者のため、質問がわかりづらかったら申し訳ありません。

現在、デスクトップに置いてあるvbsに下記の内容を加えたいと思っています。
また、理由があり、vbsはデスクトップに置いたままにしておく必要があります。

下記の内容をどのようにすれば実現できるか、ご教示いただけないでしょうか。

特定のソフト → C:\Program Files\AAA\BBB\CCC.EXE
特定のソフトに読み込ませたいファイル → C:\OOO\PPP\ファイル名.txt
フォルダ   → C:\OOO\PPP

毎回こちらがある操作をしたタイミングで、フォルダの中身が上書きされていきます。(この操作のタイミングは手動のため、特に意識する必要はないです。)
そのため、ファイル名は毎回変わりますが、フォルダは常に同じです。
読み込ませたいファイルはtxtファイルで、フォルダ内にtxtファイルは毎回1つだけです。

特定のソフトを起動させるためにRunメソッドを使うのかなと考えましたが、毎回名前のかわるファイルをどうやってソフトに読み込ませたらいいのかがわかりません。

もしよければ、皆さんのお力を貸していただけないでしょうか。
よろしくお願いいたします。

お世話になります。
vbs初心者のため、質問がわかりづらかったら申し訳ありません。

現在、デスクトップに置いてあるvbsに下記の内容を加えたいと思っています。
また、理由があり、vbsはデスクトップに置いたままにしておく必要があります。

下記の内容をどのようにすれば実現できるか、ご教示いただけないでしょうか。

特定のソフト → C:\Program Files\AAA\BBB\CCC.EXE
特定のソフトに読み込ませたいファイル → C:\OOO\PPP\ファイル名.txt
フォルダ   → C:\OOO\PPP

毎回こちらがある操...続きを読む

Aベストアンサー

前回の回答者ですが、この質問を見てしまったから、もう一度回答し直しますが、これはダメだ、ボツだ、締め切りというのはやめてくださいね。

>毎回名前のかわるファイルをどうやってソフトに読み込ませたらいいのかがわかりません。

というよりも、自動的にフォルダの中のひとつのファイルを選ぶという趣旨ではありませんか?
変数の宣言はしていませんが、このような内容でいかがでしょうか?
なお、実行ファイルにオプションをつける時は、多少複雑になることがあります。

Const EXEPROGRAM ="C:\Program Files\AAA\BBB\CCC.EXE"
Const TRGTFOLDER ="C:\OOO\PPP\"
Set objShell = CreateObject("Wscript.Shell")
Set objFS= CreateObject("Scripting.FileSystemObject")

Set objFolder = objFS.getFolder(TRGTFOLDER)
Set objFiles =objFolder.Files
For Each ea In objFiles
If LCase(Right(ea,4))=".txt" Then
filename= ea
Exit For
End If
Next
If Len(filename)>0 Then
objShell.Exec EXEPROGRAM & filename
Else
MsgBox "ファイルは見つかりません。",16
End If

前回の回答者ですが、この質問を見てしまったから、もう一度回答し直しますが、これはダメだ、ボツだ、締め切りというのはやめてくださいね。

>毎回名前のかわるファイルをどうやってソフトに読み込ませたらいいのかがわかりません。

というよりも、自動的にフォルダの中のひとつのファイルを選ぶという趣旨ではありませんか?
変数の宣言はしていませんが、このような内容でいかがでしょうか?
なお、実行ファイルにオプションをつける時は、多少複雑になることがあります。

Const EXEPROGRAM ="C:\Program F...続きを読む

QFirefoxのアドオンをアルファベット順でなくインストール日でソート

Firefoxのアドオンをアルファベット順でなくインストール日でソートする方法を探しています。

Firefoxのアドオンを管理するとき、標準ではアルファベット順でソートされるので、大量のアドオンから、設定を変更したいアドオン、無効化したいアドオンを探すのが大変です。
特に、複数のアドオンを同時にインストールした直後にFirefox不具合が起こったとき、その原因のアドオンを探すために、一つづつ無効化するのですが、
アルファベット順のソートだと、「さっきインストールしたアドオン」がどれだかわからなくなってしまいます。

アドオンをインストール日でソートする方法(アドオン、コンフィグ等)はあるのでしょうか?
インストール日でのソートでなくても、アドオンの管理が楽になる方法を募集します。

Aベストアンサー

念の為、追加です。

もし・・
質問者さまが、「All-in-One Sidebar」をご使用になっているとすると
「ボタンバー」が下ではなく、上に移動されているはずですからご注意を・・

「ボタンバー」とは、
「インストール(N)」ボタン、「更新を確認(F)」ボタン、「フィルター入力欄」、
1番右側に質問者さまお求めの、インストール日時で「ソート」するボタンのあるバーです。

 ※ この場では以後、インストール日時で「ソート」するボタンを、
   「ソートボタン」とします。

「All-in-One Sidebar」をご使用の場合、
サイドバーを広げて「ソートボタン」を確認してください。
 ※「サイドバーの広さによって、「ソートボタン」が隠れて見えない場合があります。」
   フィルター入力欄の右側です。

アドオン「MR Tech Toolkit」を導入する事で、
アドオン管理は、凄く便利になります。

アドオン「MR Tech Toolkit」は、アドオン強制導入するだけではありません。
他にも便利な機能がいろいろあります。

念の為、追加です。

もし・・
質問者さまが、「All-in-One Sidebar」をご使用になっているとすると
「ボタンバー」が下ではなく、上に移動されているはずですからご注意を・・

「ボタンバー」とは、
「インストール(N)」ボタン、「更新を確認(F)」ボタン、「フィルター入力欄」、
1番右側に質問者さまお求めの、インストール日時で「ソート」するボタンのあるバーです。

 ※ この場では以後、インストール日時で「ソート」するボタンを、
   「ソートボタン」とします。

「All-in-One Sidebar...続きを読む

Qフォルダ内にあるファイル全てを比較したい

以前よりこちらでファイル比較を相談していたものですが
ファイルNo.1~26までを比較するソフトは出来たのですが
状況によっては1~3までとか1,4,18とか飛ばし飛ばしに
ファイルがある場合があります。
その場合For文では無いファイル番号で比較が終わってしまい
次に進まないのですが、こういった時はどうしたらよいのでしょうか?
IF文なのかとも思いましたが、調べてもしっくりくるものが判らず
???だらけです。

どなた様か御教授御願い致します。

ちなみに下がファイル比較するソースになります。


Option Explicit

Function Comp(ByVal F1$, ByVal F2$) As Long
Dim EXE, STD, TxT$, CNT&, I&
TxT = "fc /b " & F1 & " " & F2
Set EXE = CreateObject("WScript.Shell").Exec(TxT)
Set STD = EXE.StdOut
Do While EXE.Status = 0
'Do Until STD.AtEndOfStream
TxT = STD.ReadLine
CNT = CNT + 1
If CNT = 2 Then Exit Do
Loop
If EXE.Status = 0 Then
EXE.Terminate
If TxT = "FC: 相違点は検出されませんでした" Then
CNT = 0
Else
CNT = 1
End If
Else
CNT = EXE.ExitCode
End If
STD.Close
Comp = CNT
End Function
Private Sub Command1_Click()

Dim keka As Long
Dim I&, F1$, F2$
For I = 1 To 25
F1 = "a:\W-NO-" & Format(I, "00") & ".DAT"
F2 = "c:\VB\W-NO-" & Format(I, "00") & ".DAT"
keka = Comp(F1, F2)
Select Case keka
Case 1:
MsgBox F1 & "と" & F2 & "は等しくない"
Exit For
Case 2:
MsgBox F1 & "と" & F2 & "の比較で入出力障害を検出した"
Exit For
End Select
Next

End Sub

以前よりこちらでファイル比較を相談していたものですが
ファイルNo.1~26までを比較するソフトは出来たのですが
状況によっては1~3までとか1,4,18とか飛ばし飛ばしに
ファイルがある場合があります。
その場合For文では無いファイル番号で比較が終わってしまい
次に進まないのですが、こういった時はどうしたらよいのでしょうか?
IF文なのかとも思いましたが、調べてもしっくりくるものが判らず
???だらけです。

どなた様か御教授御願い致します。

ちなみに下がファイル比較するソ...続きを読む

Aベストアンサー

Dim I&, F1$, F2$ '★←ここまでは以前と同じ

'★== FD側のファイルを列挙する ==
F1 = Dir("a:\*.DAT") 'A:\にある拡張子.DATのファイル全て
If F1 = "" Then '★該当ファイルが1個も無い場合
  MsgBox "該当ファイルがありません"
  Exit Sub
End If
'★== FD側のファイル名を記録する ==
I = -1 '最初は-1から
ReDim F(0) 'ファイル名を蓄える配列
Do
  I = I + 1 '配列要素数(正しくは最大インデックス)を更新
  ReDim Preserve F(I) = F1 '記録する
  F1 = Dir '次のファイルを取得 ※パラメータ無しに注意
Loop Until F1 = "" '見つからなくなるまで繰り返す
'★== 記録したファイル名を逐次処理する ==
For Each F1 In F
  F2 = "c:\VB\" & F1 'HD側のパス名
  If Dir(F2) <> "" Then 'ファイルが存在する場合
    F1 = "a:\" & F1 'FD側パス名
    keka = Comp(F1, F2) 'ファイルを比較
    Select Case keka '結果による振り分け
'★ === 中略 === ここは前のSelect Case と同じ
    End Select
  End If
Next
End Sub
今までの For I = 1 To 25 ~ Next は消去してください。

Dim I&, F1$, F2$ '★←ここまでは以前と同じ

'★== FD側のファイルを列挙する ==
F1 = Dir("a:\*.DAT") 'A:\にある拡張子.DATのファイル全て
If F1 = "" Then '★該当ファイルが1個も無い場合
  MsgBox "該当ファイルがありません"
  Exit Sub
End If
'★== FD側のファイル名を記録する ==
I = -1 '最初は-1から
ReDim F(0) 'ファイル名を蓄える配列
Do
  I = I + 1 '配列要素数(正しくは最大インデックス)を更新
  ReDim Preserve F(I) = F1 '記録する
  F1 = Dir '次のファイルを取得...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング