Page 157 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼同一フォルダ内にある不特定多数のファイル名の取得 素人 02/9/6(金) 20:40 ┣Re:同一フォルダ内にある不特定多数のファイル名の取得 shun 02/9/6(金) 21:17 ┃ ┗Re:同一フォルダ内にある不特定多数のファイル名の取得 カド 02/9/10(火) 13:18 ┃ ┗Re:同一フォルダ内にある不特定多数のファイル名の取得 りん 02/9/10(火) 13:46 ┃ ┣ありがとうございます カド 02/9/10(火) 14:03 ┃ ┗Re:同一フォルダ内にある不特定多数のファイル名の取得 カド 02/9/11(水) 8:58 ┃ ┗Re:同一フォルダ内にある不特定多数のファイル名の取得 りん 02/9/11(水) 10:02 ┃ ┗ありがとうございます カド 02/9/11(水) 10:55 ┗Re:同一フォルダ内にある不特定多数のファイル名の取得 こうき 02/9/30(月) 17:24 ┗Re:同一フォルダ内にある不特定多数のファ... つん 02/10/1(火) 14:07 ┣Re:同一フォルダ内にある不特定多数のファ... こうき 02/10/1(火) 15:19 ┗つんさん ごめん。 Jaka 02/10/2(水) 10:06 ┗Re:つんさん ごめん。 つん 02/10/2(水) 10:22 ┗役に立たない助っ人でごめんなさい。 Jaka 02/10/2(水) 13:25 ┗とんでもない!いつも助けてもらってます つん 02/10/2(水) 14:01 ┗偉そうな事を言ってしまいました。 Jaka 02/10/2(水) 17:13 ─────────────────────────────────────── ■題名 : 同一フォルダ内にある不特定多数のファイル名の取得 ■名前 : 素人 ■日付 : 02/9/6(金) 20:40 -------------------------------------------------------------------------
同一フォルダ内にある不特定多数のファイル名の取得するコードをご存知の方、よろしくお願いします。 |
▼素人 さん:こんばんわ >同一フォルダ内にある不特定多数のファイル名の取得するコードをご存知の方、よろしくお願いします。 このコードを実行するブックが調べたいフォルダに登録されているものとします。 検索結果は、"Sheet1"に書き出します。 Sub test() Dim Pn As String Dim Fn As String Dim i As Long Pn = ActiveWorkbook.Path ChDir Pn Fn = Dir("*.xls") i = 1 Do Until Fn = "" Worksheets("Sheet1").Cells(i, 1) = Fn i = i + 1 Fn = Dir() Loop End Sub |
▼shun さん: サブフォルダ内のファイル名も取得したい場合は、どうすれば良いのでしょうか? 教えてください。 |
こんにちわ。 >サブフォルダ内のファイル名も取得したい場合は、どうすれば良いのでしょうか? >教えてください。 こちらもどうぞ。 http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=ntr;tree=12072;id=Excel |
▼りん さん: 早々の回答有難う御座います。 今までは、分からないことを本やネットで相当な時間と労力を費やして調べていましたが、質問箱に投稿すれば、こんなにも早く正解が分かるなんて夢のようです。 知的財産は皆で共有しましょう。 |
▼りん さん: いつも自分の知っているレベルのことを駆使してプログラミングしているため、難しいことは分かりません。教えて下さい。 下記の?部ですが、 FileListing (strFilesPath, strSearchFile, strData(), blnSubDir) のように括弧がないのはどうしてですか?初歩的な質問ですみません。 Public Function FilesList(ByVal strFilesPath As String, _ ByVal strSearchFile As String, _ Optional blnSubDir As Boolean = False) As Variant ・ ・ ?FileListing strFilesPath, strSearchFile, strData(), blnSubDir End Function Private Sub FileListing(ByVal strFilesPath As String, _ ByVal strSearchFile As String, _ strData() As String, blnSubDir As Boolean) ・ ・ End Sub |
カドさん、おはようございます。 >FileListing (strFilesPath, strSearchFile, strData(), blnSubDir) >のように括弧がないのはどうしてですか?初歩的な質問ですみません。 > FileListing strFilesPath, strSearchFile, strData(), blnSubDir ↓こいつを呼んでいる >Private Sub FileListing(ByVal strFilesPath As String, _ > ByVal strSearchFile As String, _ > strData() As String, blnSubDir As Boolean) > ・ > ・ >End Sub ヘルプより引用開始===== Call ステートメント プロシージャを呼び出すとき、キーワード Call は省略できます。キーワード Call を使って、引数が必要なプロシージャを呼び出す場合は、引数リスト (引数 argumentlist) をかっこで囲む必要があります。キーワード Call を省略するときは、引数リストを囲むかっこも省略しなければなりません。 引用終了========== なので、 Call FileListing(strFilesPath, strSearchFile, strData(), blnSubDir) Callの使い方にもちょこっと載ってますので、そちらもどうぞ。 |
▼りん さん: 早々の回答有難う御座います。 一応ヘルプのcallは読んだのですが、最後までしっかり読んでなかったようです。 今後気をつけます。 |
同一フォルダ内にある不特定多数のファイル名をsheet2に貼り付けたのですが、 そのファイルの順番を指定することは可能ですか? ちなみに、ファイルは 1990-01.csv 1990-02.csv 1990-03.csv 1990-04.csv (yyyy-mm).csv ・ ・ ・ という形になっていて、古い順番に開きたいのですが・・・。 |
こんにちは。 ファイル名を読み込むときにソートをかけてやる必要があるみたいです。 http://www21.tok2.com/home/vbalab/bbs/c-board.cgi?cmd=one;no=11625;id=Excel こちらの記事が参考になると思います。 一度見てみてくださいね。 |
▼つん さん: こんにちは。 >ファイル名を読み込むときにソートをかけてやる必要があるみたいです。 なるほどー。うまくいきました。 おかげさまで、やっと完成しました。 ありがとうございます。 |
前より少しマシです。(V3のどっか) ヘルプのFoundFiles オブジェクトにヒントがありました。 昇順、降順で書き出しています。 ついでにフルパスからファイル名だけを取出す方法も..。 知っていると思うけど...。 Sub 昇順() Dim i As Long With Application.FileSearch .LookIn = "C:\Windows\デスクトップ" .FileName = "*.xls" If .Execute(SortBy:=msoSortByFileName, _ sortorder:=msoSortOrderAscending) > 0 Then Range("A1").Value = "ファイル名" Range("B1").Value = "フルパス" For i = 1 To .FoundFiles.Count Range("A" & i + 1).Value = Dir(.FoundFiles(i)) Range("B" & i + 1).Value = .FoundFiles(i) Next Else MsgBox "エクセルファイルはありません。" End If End With End Sub Sub 降順() Dim i As Long With Application.FileSearch .LookIn = "C:\Windows\デスクトップ" .FileName = "*.xls" If .Execute(SortBy:=msoSortByFileName, _ sortorder:=msoSortOrderDescending) > 0 Then Range("A1").Value = "ファイル名" Range("B1").Value = "フルパス" For i = 1 To .FoundFiles.Count Range("A" & i + 1).Value = Dir(.FoundFiles(i)) Range("B" & i + 1).Value = .FoundFiles(i) Next Else MsgBox "エクセルファイルはありません。" End If End With End Sub |
Jakaさん、おはようございます。 >前より少しマシです。(V3のどっか) >ヘルプのFoundFiles オブジェクトにヒントがありました。 >昇順、降順で書き出しています。 おお!これは便利ですねー。 FileSearchは使ったことあったけど、Executeメソッドで、ファイルを並べ替えられるのはわかってなかったです(と、思う・・・記憶がおぼろ〜) でも!でもね!Jakaさん!! この間から、FileSearchで不具合続出してるんです(T_T) 明らかにあるファイルを見つけられなかったことが何度か・・・ 2年ほど前に作ったソフトの中でも使ってたんですけど、作った当初はつつがなく動作していたのに、今年になってから、コンボボックスで指定したファイルを開く、というところで、「ファイルがありません」で止まってしまうということがありました・・・確かめたらあるんですけど。 結局Dir関数だけの処理に書き換えました。 Jakaさんは、よく使われますか?問題なく使えてます? |
>この間から、FileSearchで不具合続出してるんです(T_T) >結局Dir関数だけの処理に書き換えました。 「結局Dir関数だけの処理」でV3で色々論議していたような事を思いだしました。 確か、Dir関数が1番速いとかで終っていた様に思います。 この時に色々思考錯誤したしたせいで調子が悪くなったとは考えられませんか? ちゃんとメンテナンスしてます? >Jakaさんは、よく使われますか?問題なく使えてます? おっと、1番つらい事を問い掛けてきましたね。 今の所は、ちゃんと動いていると思います。(たぶん) 暇つぶし見たいな感じでやっているんで、頻繁に使うとどうなるのか解らないけど..。 |
Jakaさんこんにちは。 >「結局Dir関数だけの処理」でV3で色々論議していたような事を思いだしました。 >確か、Dir関数が1番速いとかで終っていた様に思います。 >この時に色々思考錯誤したしたせいで調子が悪くなったとは考えられませんか? いえ・・・このソフトは、その部分ではあまり試行錯誤してなかったので・・ 第一、私その議論には関係してなかったような・・読んだ記憶はおぼろげながら(^^; してたっけ?あとでちと探してみよう・・・ >ちゃんとメンテナンスしてます? えっ!?メンテナンスなんかしてへんわっ FileSearchでエラーが出て、あわてて修正したぐらい。 わずかながら他にも作ったソフトも作りっぱなしやわ。 (つくっておいて自分はあまり使わないし(^^; 社内の他の人が使ってます) Jakaさんは、ちゃんと定期的にメンテしたりしてるの? どうやってしてるの? >おっと、1番つらい事を問い掛けてきましたね。 すんません(^^; >今の所は、ちゃんと動いていると思います。(たぶん) >暇つぶし見たいな感じでやっているんで、頻繁に使うとどうなるのか解らないけど..。 そうかあ・・・ 私は、この間なんか、作った直後に1回目だけ成功して、あとは全部失敗!ということありました(T_T) |
メンテナンスって、パソコンの事です。(メンテナンスって言うほどの事じゃないけど) 過去に作ったマクロのメンテナンスなど全くしません。 同じ物を2度作るのは、面倒なんで参考資料として残してありますが。(ロジックをすぐに忘れる。スペルが覚えられない。今だにRange("A65536").End(xlUp).Row 、Cells(.Rows.Count, 1).End(xlUp).Rowこう言うのも書けない。これは、コピペです。) それと、私の使っているPCは、つんさん達が使っているPCよりかなり古い、HDの容量が2Gちょっとしかないので気軽にメンテナンスって言葉と使っていますが、メンテナンスって言ったって,ただのスキャンディスク(完全の方)、デフラグ、たまにマスターブートのリフレッシュ、極たまにレジストリのスキャンをするだけです。 暇だから。 >社内の他の人が使ってます。 いいなぁ!! |