[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『dir関数で"."".."を取得しないようにするには』(tomato)
Dir関数によるフォルダ名の取得しかたについて教えてください。
本校の講座「ファイル一覧の印刷」の目的とは若干違いますがこれを参考にして
Sub CurFileList(r, c, cur, opt)のなかの
myfile = Dir(cur2, vbNormal) ' ←ポイント1 myfile = Dir(cur2, vbDirectory)
のようにvbDirectoryで、"*"を条件にデータを取得させると必ず "."".."の2項目が出てしまいます。
セルに書かせたあとから消すのは容易ですが、最初からこれを除外して実在フォルダ名だけを取得し、UserformのListboxなどに取り込むにはどうすればいいのでしょうか?
[エクセルのバージョン]
Excel2000
OSのバージョン]
Windows2000
>最初からこれを除外して実在フォルダ名だけを取得し、 取得してもセルに書き出す前に判定するのはダメなのでしょうか? (じゅんじゅん)
Do While myfile <> Empty Cells(r, c).Value = myfile Cells(r, c + 1).Value = FileDateTime(cur & myfile) 'ファイルの更新日付 r = r + 1 Loop このLoopのなかでどうやって条件を入れる? (tomato)
コードの全貌が分からないので,見当違いかもしれませんが, フォルダ名だけを取得する必要があるのでしょうか? ファイルのパスが重要だと思うのですが・・・ パスならば『CurDir()』で取得できます。
おかしなことを言っていたら無視して下さい。 (tomo)
If myfile <> "." And myfile <> ".." Then Cells(r, c).Value = myfile Cells(r, c + 1).Value = FileDateTime(cur & myfile) 'ファイルの更新日付 r = r + 1 End If でどうでしょう?
でも、 myfile=dir() が足りないような??? (じゅんじゅん)
Do While myfile <> Empty
If myfile <> "." And myfile <> ".." Then Cells(r, c).Value = myfile Cells(r, c + 1).Value = FileDateTime(cur & myfile) 'ファイルの更新日付 r = r + 1 End If myfile=dir() Loop
でバッチリでした。
じつは条件に Or を使って
If myfile <> "." Or myfile <> ".." Then
とやってしまい、うまくいかなかったという、なんともお粗末・・・とほほ
でも、こんな条件をわざわざつけなくても「(常人には)見えていないものまで取り込まなくても・・」という、なんか「(VBA)らしくないじゃん」という疑問はのこります。
tomoさんの『CurDir()』でもそのディレクトリに格納されたすべてのフォルダ名などを取得できるのでしょうか??
全てのフォルダ名は取得できません。 あくまでもカレントディレクトリ(ファイル-開くのウィンドウの階層)のパスだけです。 (コードを見るとファイル名の取得のような気がするのですが・・・ ファイル名の取得?フォルダ名の取得?)
まあ,解決したようなので,忘れてください。(tomo)
>Do While myfile <> Empty myfile はstring型で返ってくると思うので Empty で大丈夫ですか?
Do While myfile <> "" とか Do While Len(myfile) > 0 とか Do While myfile <> vbNullString とか (seiya)
問題はなさそうでしたが、"" に修正しました。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.