質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1939閲覧

VBA:パスのワイルドカードを用いてファイル名等を取得したい

vivid

総合スコア8

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/07/03 09:49

編集2018/07/03 09:52

前提・実現したいこと

VBAに対する知識が浅いため、質問させてください。
今回作成予定のVBAにあるセルに入力されたファイル名からパス、サイズ、日付などを取得したい。
また、パスを指定する際にワイルドカードなどを用いて検索対象を広げたい。

"C\フォルダ\フォルダA\フォルダB" & Range("D10").Value
→フォルダB等をワイルドカードに変更したい

発生している問題・エラーメッセージ

ファイル名または番号が不正ですと出力

該当のソースコード

VBA

1Sub Execution() 2 3 Dim myName As String '名前 4 Dim myFileSize As Long 'ファイルサイズ 5 Dim myFilePath As String 'ファイルの日付 6 Dim myPath As String 'パス 7 8'名前の取得と出力 9 myName = Dir("C\フォルダ\フォルダA\" & "*\" & Range("D10").Value) 10 Range("F2").Value = KName 11 12 'サイズの取得と出力 13 myFileSize = FileLen("C\フォルダ\フォルダA\" & "*\" & Range("D10").Value) 14 Range("G2").Value = myFileSize 15 16 '日付の取得と出力 17 Range("H2").Value = FileDateTime("C\フォルダ\フォルダA\" & "*\" & Range("D10").Value) 18 19 'パスの取得と出力 20 myPath = ("C\フォルダ\フォルダA\" & "*\" & Range("D10").Value) 21 Range("I2").Value = myPath 22 23End Sub

試したこと

BookA.xlmsのセル"D10"に入力されたファイル名を用いて
("C\フォルダ\フォルダA\フォルダB" &Range("D10").Value)
→パス名にワイルドカードを用いらなければ値が取得できることは確認しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Dirはワイルドカードが使えるみたいですが、FileLenFileDateTimeはファイル名を指定するようになっているので、そのせいではないですかね?
複数件引っかかった時のことを考慮されていないように見えるので、いっそファイルシステムオブジェクトを使って、こちらのような方法でファイルの情報を取得しては?

投稿2018/07/04 00:30

sysjojo

総合スコア325

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vivid

2018/07/05 12:39

回答ありがとうございます。 ファイルシステムオブジェクトの検索方法で可能なことが分かりました。 また、検索方法については複数あるようなので、基本はファイルシステムオブジェクトで作成を進めていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問