アプリ版:「スタンプのみでお礼する」機能のリリースについて

前回の質問と並行しています。
このFileSearch2007では、今のエクセル形式.xlsm に対応していません。
純粋に今の形式に対応可能な構文の記述が全く分かりません。
何かヒントなどをご教授いただければ幸いです。
よろしくお願いいたします。

Function FileSearch2007(dir_path, target_extention)
Set found_files = New Collection
Call FileSearch2007_Repeat(dir_path, found_files, target_extention)
Set FileSearch2007 = found_files
End Function

Private Sub FileSearch2007_Repeat(dir_path, found_files, target_extention)
Set fso = New FileSystemObject
Set target_folder = fso.GetFolder(dir_path)
For Each sub_folder In target_folder.SubFolders
Call FileSearch2007_Repeat(sub_folder.Path, found_files, target_extention)
Next sub_folder
For Each objFile In target_folder.Files
With objFile
If ((UCase(fso.GetExtensionName(.Path))) = target_extention) Then
found_files.Add Item:=.Path
End If
End With
Next objFile
Set fso = Nothing
End Sub

A 回答 (1件)

こんばんは



>今のエクセル形式.xlsm に対応していません。
.xlsmのファイルに記述したときに動作しないという意味でしょうか?

ざっと見る限り、問題はなさそうですが・・
ごく簡単なテストしか行っていませんが、その範囲内ではちゃんと動作しますね。
(指定した拡張子のファイルパスのコレクションを返します)
(Win 10 Excel 2019 環境でテスト)

何をもって「対応していない」と判断なさっているのかわかりませんけれど、エラーが出るのでしょうか?
あるいは、Count=0のコレクションが返されるとか?
エラーが出るとするなら、FSOの参照設定をしていないくらいしか思いつきませんけれど・・
あるいは、特殊なディレクトリ(=例えば、参照権限がないディレクトリ)に対して実行しようとしているとか・・
    • good
    • 2
この回答へのお礼

fujillin様

ご教授有難うございました。
複数の.xlsm ファイルVBAで開いて、必要なデータを読み込んでいます。
そのVBAが落ちてしまうのですが、原因がFileSearch2007だと勘違いしていたようです。

fujillin様の仰るように、この構文は特に問題なく動くことを再確認いたしmした。

ご助言有難うございました。

お礼日時:2022/12/22 11:04

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