おはようございます。
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
-------------------------------------
No.1ベストアンサー
- 回答日時:
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様に対し、良回答の判断をしなければいけないのがとても心苦しかったです、、、、どうかお許しください。
今後もよろしくお願いします。
親身な回答していただき、本当にありがとうございます。
DIR関数の拡張子指定も"*.txt;*.doc" のようにできるればと思っていたのですが、imogasi様のようにIF文を使った方が無難そうですね。
リストビューコントロールにIEキャッシュ内のファイルの一覧を表示させようとしていました。DIR関数にこだわっていたのですが、ファイルリストボックスを表示させない形で利用した方が良いかな・・・
imogasi様のアドバイスを参考にもう一度挑戦してみようと思います。
No.3
- 回答日時:
こんにちは!
もうできちゃったかな?
プロシージャを載せます。
私のは、拡張子はもう少し厳密にチェックしています。
サンプルを元にしているので、著作権の一部はマイクロソフトにあると思います。
リストボックス「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
では!
この回答への補足
こんなにも詳しい解説付きのプロシージャを書いてくださいまして、なんてお礼を申したらよいのか・・・本当にありがとうございます。
今からコードを貼り付けて、実際に試してみます。明日・・・いや今日ですね(苦笑)今日中に結果報告させていただきます。
それでは、一旦失礼します、、、
imogasi様、i-touch様、回答をくださいまして本当にありがとうございました。
(1)IF文で拡張子を区分する方法と(2)ファイルリストボックスで拡張子を区分する方法の両方を試してみました。
IEキャッシュの中からjpg・gifを取り出す作業をしてみたところ、(1)(2)ともに処理スピードはほぼ同じでした。
コードの記載は、ファイルリストボックス(visible=falseの状態)を使った方が楽で、把握しやすいことも分かりました。
imogasi様とi-touch様に対し、良回答の判断をしなければいけないのがとても心苦しかったです、、、、どうかお許しください。
今後もよろしくお願いします。
No.2
- 回答日時:
こんにちは
指定したフォルダ中の、ファイルのリストを取得するサンプルが、ヘルプで出てくると思います。
それを改造して、取得したファイル名から、IF文で、拡張子がdoc,txtのものだけリストに加えるようにすれば簡単ですよ。
私はリストボックスにAdditemで加えて、ファイルのリストを作っています。
では!
回答していただき、ありがとうございます。返信が遅くなってしまい、申し訳ありません、、、
DIR関数で複数の指定拡張子のファイル名を取得し、リストビューコントロールに表示させようしていました。ファイル名の取得にDIR関数を使っていたため、ファイルリストボックスコントロールでの「File.Pattern = "*.txt;*.doc" 」のように一つの文章にできないものか悩んでいました。
「リストボックスにAdditemで加えて、ファイルのリストを作っています」
この方法の方が、処理も早そうですね。imogasiさんに上手にまとめたif文と合わせて試し、後日結果報告をさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBA GetAttrについて教えてください 2 2022/12/22 15:25
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
ファイルの最後に文字列挿入
-
多数のサブディレクトリ内のフ...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
VBAでエクセルをtxtに変換する...
-
txtファイルが作成されない
-
Windows マシンでFTPバッチが動...
-
テキストファイルで提出とは?
-
COPYコマンドで結合すると余計...
-
コマンドプロンプトでファイル...
-
VB.NETでフォルダを圧縮
-
renameコマンドについて
-
ファイル内容の修正、行削除に...
-
Teraマクロで取得した変数を編...
-
テキスト(txt)→ワード(docx)へ...
-
javaで大量のファイルを読み込...
-
ADODB.Streamで開いたファイル...
-
Windows版のgzipについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
VBAでワークシートを引数として...
-
.txtではなく.logの方が良いの...
-
拡張子を元に戻す
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
forfilesで検索したファイルを...
-
テキストファイルのファイル名...
-
テキストファイルで提出とは?
-
ファイルの最後に文字列挿入
-
バッチファイル 複数ファイル...
-
Windowsのバッチファイルを利用...
-
バッチファイルからVBAに引数を...
-
psqlでエラーログをとりたい
-
renameコマンドについて
-
VBAでエクセルをtxtに変換する...
-
バッチファイルで文字列削除に...
-
cshでファイルサイズ取得
-
テキスト(txt)→ワード(docx)へ...
-
ファイル内容の修正、行削除に...
おすすめ情報