dポイントプレゼントキャンペーン実施中!

おはようございます。

txtファイル名とdocファイル名を取得したく、以下のコードを作成してみました。
DIR関数を使って、ファイルリストボックスのPatternプロバディのように、複数の形式のファイル名を同時に取得する方法はあるのでしょうか?

是非、教えてください。よろしくお願いします。

-----------------------------
Private Sub Form_Load()
Dim MyName

MyName = Dir("C:\My Documents\*.txt")
Do While MyName <> ""
MsgBox MyName
MyName = Dir
Loop

MyName = Dir("C:\My Documents\*.doc")
Do While MyName <> ""
MsgBox MyName
MyName = Dir
Loop
End
End Sub
-------------------------------------

A 回答 (3件)

VBのForm1の上にドライブ、ディレクトリ、ファイルリストボックスを


貼りつけ、それぞれのコントロールをダブルクリックして
Private Sub Drive1_Change()
Dir1.Path=Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
File1.Pattern = "*.txt;*.doc"
End Sub

Private Sub File1_Click()
flnam= File1.FileName
MsgBox flnam
End Sub
と入力して見ました。実行すると
ファイルリストボックスに拡張子が「txt」と「doc」の2つが
現われます。そしてクリックして指定したファイル名が
MsgBoxに現われます。
本件の質問は、この「Pattern」プロパティと、拡張子を列記する
方法「;」に付いての質問ではないのでしょうか。
「Pattern」の語が出ているので多分ご存知の様子ですね。
-----
またDir関数で下記を実行してみました。ご参考になれば。
Private Sub Form_Click()
a = Dir("c:\My Documents\*.*")
For i = 1 To 40
 a = Dir()
 a = Trim(a)
 b = Right(a, 4)
  If b = ".doc" Then
     Form1.Print a
  ElseIf b = ".txt" Then
     Form1.Print a
  End If
Next i
End Sub
仮に繰り返し回数を「40」としていますが、ファイル数より回数が進んだ時の「エラーの検知方法」が思い出せず不完全です。すみません。全般について、ご存知の方やダメな点を私も教わりたいです。

この回答への補足

imogasi様、i-touch様、回答をくださいまして本当にありがとうございました。

(1)IF文で拡張子を区分する方法と(2)ファイルリストボックスで拡張子を区分する方法の両方を試してみました。

IEキャッシュの中からjpg・gifを取り出す作業をしてみたところ、(1)(2)ともに処理スピードはほぼ同じでした。
コードの記載は、ファイルリストボックス(visible=falseの状態)を使った方が楽で、把握しやすいことも分かりました。

imogasi様とi-touch様に対し、良回答の判断をしなければいけないのがとても心苦しかったです、、、、どうかお許しください。

今後もよろしくお願いします。

補足日時:2002/05/24 00:03
    • good
    • 0
この回答へのお礼

親身な回答していただき、本当にありがとうございます。

DIR関数の拡張子指定も"*.txt;*.doc" のようにできるればと思っていたのですが、imogasi様のようにIF文を使った方が無難そうですね。

リストビューコントロールにIEキャッシュ内のファイルの一覧を表示させようとしていました。DIR関数にこだわっていたのですが、ファイルリストボックスを表示させない形で利用した方が良いかな・・・

imogasi様のアドバイスを参考にもう一度挑戦してみようと思います。

お礼日時:2002/05/19 20:06

こんにちは!


もうできちゃったかな?
プロシージャを載せます。
私のは、拡張子はもう少し厳密にチェックしています。
サンプルを元にしているので、著作権の一部はマイクロソフトにあると思います。
リストボックス「list1」をフォームに貼り付けてやってみてください。
この例ではexeのあるフォルダにある*txt,*docをリストアップします。

Private Sub getFlist()
'■ ファイルのリストを取得する
Dim zMyp As String
Dim zFnm As String
Dim zName As String
Dim zKaks As String
Dim nFnm As Long
zMyp = App.Path & "\"
List1.Clear '# リストボックスを初期化する
zName = Dir(zMyp, vbNormal) '# 最初のファイル名を取得する
Do While zName <> "" '#ループ開始
'# 現在のフォルダと親フォルダは無視する
If zName <> "." And zName <> ".." Then
'# 普通のファイルかどうか
If (GetAttr(zMyp & zName) And vbNormal) = vbNormal Then
zFnm = UCase(zMyp & zName) '# パス+ファイル名
zKaks = Right(zFnm, 3) '# 拡張子
'## 拡張子のフィルタリングを行う
Select Case zKaks
Case "DOC", "TXT"
'# リストに追加!!
List1.AddItem zFnm
Case Else
'# その他のファイル
zFnm = ""
End Select
End If
End If
zName = Dir '# 次のファイル名を取得する
Loop
'# 取得したファイルの数
'nFs = List1.ListCount
End Sub

では!

この回答への補足

こんなにも詳しい解説付きのプロシージャを書いてくださいまして、なんてお礼を申したらよいのか・・・本当にありがとうございます。

今からコードを貼り付けて、実際に試してみます。明日・・・いや今日ですね(苦笑)今日中に結果報告させていただきます。
それでは、一旦失礼します、、、

補足日時:2002/05/22 00:17
    • good
    • 0
この回答へのお礼

imogasi様、i-touch様、回答をくださいまして本当にありがとうございました。

(1)IF文で拡張子を区分する方法と(2)ファイルリストボックスで拡張子を区分する方法の両方を試してみました。

IEキャッシュの中からjpg・gifを取り出す作業をしてみたところ、(1)(2)ともに処理スピードはほぼ同じでした。
コードの記載は、ファイルリストボックス(visible=falseの状態)を使った方が楽で、把握しやすいことも分かりました。

imogasi様とi-touch様に対し、良回答の判断をしなければいけないのがとても心苦しかったです、、、、どうかお許しください。

今後もよろしくお願いします。

お礼日時:2002/05/24 00:03

こんにちは


指定したフォルダ中の、ファイルのリストを取得するサンプルが、ヘルプで出てくると思います。
それを改造して、取得したファイル名から、IF文で、拡張子がdoc,txtのものだけリストに加えるようにすれば簡単ですよ。
私はリストボックスにAdditemで加えて、ファイルのリストを作っています。
では!
    • good
    • 0
この回答へのお礼

回答していただき、ありがとうございます。返信が遅くなってしまい、申し訳ありません、、、

DIR関数で複数の指定拡張子のファイル名を取得し、リストビューコントロールに表示させようしていました。ファイル名の取得にDIR関数を使っていたため、ファイルリストボックスコントロールでの「File.Pattern = "*.txt;*.doc" 」のように一つの文章にできないものか悩んでいました。

「リストボックスにAdditemで加えて、ファイルのリストを作っています」
この方法の方が、処理も早そうですね。imogasiさんに上手にまとめたif文と合わせて試し、後日結果報告をさせていただきます。

お礼日時:2002/05/21 00:43

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