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

VB.NETというサイトの「フォルダ以下のファイルを最下層まで検索または取得する」(http://jeanne.wankuma.com/tips/vb.net/directory/ …に書かれているコードを実行しようとしてもエラーが出てしまいます。どのように修正したら実行されるのか、ご教授いただけないでしょうか。よろしくお願いいたします。

VBAのバージョンは7.0です。
サンプルにある通り、C直下にHogeフォルダを作り、その中にHoge.txtを作ってあります。
標準モジュールに「使用例は以下のようになります。」に書かれているコードを、クラスモジュールには「以下にサンプルコードを示します。」に書かれているコードを張り付けました。クラス名は「GetFilesMostDeep」としています。

下記がコードの内容となっています。
★標準モジュール-----------------------------
Sub Macro4()
' ファイル名に「Hoge」を含み、拡張子が「.txt」のファイルを最下層まで検索し取得する
Dim stFilePathes As String() = GetFilesMostDeep("C:\Hoge\", "*Hoge*.txt")
Dim stPrompt As String = String.Empty

' 取得したファイル名を列挙する
For Each stFilePath As String In stFilePathes
stPrompt &= stFilePath & System.Environment.NewLine
Next stFilePath

' 取得したすべてのファイルパスを表示する
If stPrompt <> String.Empty Then
MessageBox.Show (stPrompt)
End If

End Sub
★---------------------------------------

★クラスモジュール--------------------------------
''' ---------------------------------------------------------------------------------------
''' <summary>
''' 指定した検索パターンに一致するファイルを最下層まで検索しすべて返します。</summary>
''' <param name="stRootPath">
''' 検索を開始する最上層のディレクトリへのパス。</param>
''' <param name="stPattern">
''' パス内のファイル名と対応させる検索文字列。</param>
''' <returns>
''' 検索パターンに一致したすべてのファイルパス。</returns>
''' ---------------------------------------------------------------------------------------
Public Shared Function GetFilesMostDeep(ByVal stRootPath As String, ByVal stPattern As String) As String()
Dim hStringCollection As New System.Collections.Specialized.StringCollection()

' このディレクトリ内のすべてのファイルを検索する
For Each stFilePath As String In System.IO.Directory.GetFiles(stRootPath, stPattern)
hStringCollection.Add (stFilePath)
Next stFilePath

' このディレクトリ内のすべてのサブディレクトリを検索する (再帰)
For Each stDirPath As String In System.IO.Directory.GetDirectories(stRootPath)
Dim stFilePathes As String() = GetFilesMostDeep(stDirPath, stPattern)

' 条件に合致したファイルがあった場合は、ArrayList に加える
If Not stFilePathes Is Nothing Then
hStringCollection.AddRange (stFilePathes)
End If
Next stDirPath

' StringCollection を 1 次元の String 配列にして返す
Dim stReturns As String() = New String(hStringCollection.Count - 1) {}
hStringCollection.CopyTo(stReturns, 0)

Return stReturns
End Function

A 回答 (1件)

>VBAのバージョンは7.0です。


参考にしているサイトはVB.NETですよ。
VBAでは動かないんじゃないですかね?

VBA(エクセル)であれば、
例えば
http://www.moug.net/tech/exvba/0150117.html
こちらのような事とか。
    • good
    • 0
この回答へのお礼

n-jun様
あぁなんてことでしょう・・・それじゃあ動くわけがありませんね。。
多分、お答えがなければ気がつかなかったと思います。.

URLもとても参考になりました。やりたいことがまさにここに
掲載されていました。
誠にありがとうございましたm(_ _)m

お礼日時:2012/07/21 01:11

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