'[Main関数] Sub Main() 'Main関数で利用する変数の型を定義する。 Dim FileNumber As Integer 'comment: ← 使用用途を明確にする変数名をつけるように癖をつけてください。これも混乱の元です。 Dim SDy As Integer 'comment: ← SDyってなんですか?わかりやすい名前にしてください。 Dim SerchFileandFolder As Integer 'comment: 関数名と同じ名前の変数名は定義しないでください。混乱の元です。 Dim SDirectory As String FileNumber = 2 SDy = 2 With ThisWorkbook.Worksheets("sheet1") 'SDirectoryにはB列の絶対パスを代入する。(初期値はB2セル)→★要配列への移行 SDirectory = .Cells(SDy, 2).Value 'SDirectoryに空欄が見つかったら終了。→★要配列への移行 If SDirectory <> "" Then 'SDy=FileNumberまで再帰処理を実行する。→★要配列への移行 'FileNumber = SearchFileandFolder(SDy, 2, FileNumber) '●応急処置 '対象フォルダにファイルが1つのとき→Filenumber=2←アウトくさい '対象フォルダにファイルが2つのとき→Filenumber=3←微妙 'SDy = SDy + 1 '●応急処置 'For SDy = 2 To FileNumber 'FileNumber 'SDyからFileNumberまで繰り返し 'FileNumber = SearchFileandFolder(SDy, 2, FileNumber) 'Next SDy Do FileNumber = SearchFileandFolder(SDy, 2, FileNumber) SDy = SDy + 1 'comment: 可能であれば、この動きもなくしたいところですが、本当にこのやり方でよいですか? Loop While SDy <= FileNumber End If End With End Sub '[ファイル探索関数]→ファイルを探してハイパーリンクを貼るマクロ 'B列の絶対パスから、中のフォルダ・ファイル一覧の絶対パスを取得する。 Function SearchFileandFolder(SDy As Integer, SDx As Integer, FileNumber As Integer) As Integer '検索対象のファイル(A2)セル Dim SFile As String '検索先のフォルダ_初期値(B2)セル→(B列) Dim NextFile As String Dim SDirectory As String 'ファイル・フォルダを表示する。 Const SerchRuleFileandFolder = 16 With ThisWorkbook.Worksheets("sheet1") '検索対象のファイル(A2)セル SFile = .Cells(2, 1).Value '↓検索開始直下フォルダ・ファイルの洗い出し SDirectory = .Cells(SDy, SDx).Value '★2回目以降はここをうまいことうにゃる。[B2]セルから、検索対象フォルダの絶対パスを取得。.Stringで、文字列を取得できる。 MsgBox "検索対象フォルダはコチラ:" & SDirectory '←取得したSDirectoryの値を確認 NextFile = Dir(SDirectory, SerchRuleFileandFolder) '検索対象はファイル及びフォルダ While NextFile <> "" '親フォルダの中のファイル名一覧を取得する。 '"."は華麗にスルーする If NextFile = "." Then 'Dir関数の値を次々と読みこんでゆく。 NextFile = Dir '".."は華麗にスルーする ElseIf NextFile = ".." Then 'Dir関数の値を次々と読みこんでゆく。 NextFile = Dir '"NextFile=SFile"なら終了 ElseIf NextFile = SFile Then MsgBox "処理回数" & FileNumber - 1 FileNumber = FileNumber + 1 '↓ハイパーリンク(コピペ) .Hyperlinks.Add Anchor:=.Cells(2, 1), _ Address:=SDirectory & NextFile, _ TextToDisplay:=NextFile '↑ハイパーリンク(コピペ) '.Cells(FileNumber, 1).Value = NextFile 'ファイル名の印字 '.Cells(FileNumber, 2).Value = SDirectory & NextFile & "\" '絶対パスの印字←ハイパーリンクを貼る。 '.Cells(FileNumber, 3).Value = FileNumber 'MsgBox "見つかったよ!" 'Debug.Print "見つかったよ!" '値を戻す場合は、関数名に代入してください。(関数の終わりに戻り値として返却されます) 'SearchFileandFolder Exit Function Else MsgBox "処理回数" & FileNumber - 1 '"."".."以外はガッチリリストアップする。 FileNumber = FileNumber + 1 '.Cells(FileNumber, 1).Value = NextFile 'ファイル名の印字 '.Cells(FileNumber, 2).Value = SDirectory & NextFile & "\" '絶対パスの印字 '.Cells(FileNumber, 3).Value = FileNumber NextFile = Dir 'Dir関数の値を次々と読みこんでゆく。 End If 'Cells -> Debug.Printに変更 Debug.Print NextFile 'ファイル名の印字 Debug.Print SDirectory & NextFile & "\" '絶対パスの印字←ハイパーリンクを貼る。 Debug.Print FileNumber 'Dir関数の値を次々と読みこんでゆく。 Wend SearchFileandFolder = FileNumber '↑検索開始直下フォルダ・ファイルの洗い出し End With MsgBox "Functionマクロを実行しました" End Function 'comment: サンプル用の関数を定義しましたので動きを確認される場合は、 SayHello内にカーソルを置いて 'comment: F5キーを押してください ' Hello文字列を返す関数 Function GetHello() As String GetHello = "Hello" End Function ' GetHello()から文字列を取得し、発言する手続 Sub SayHello() Dim HelloString As String HelloString = GetHello Debug.Print HelloString End Sub
Standard input is empty
Visual Basic.Net Compiler version 0.0.0.5914 (Mono 2.4.2 - r) Copyright (C) 2004-2008 Rolf Bjarne Kvinge. All rights reserved. /home/rWfWYN/prog.vb (2,4) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (4,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (5,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (6,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (7,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (9,15) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (10,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (12,9) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (14,19) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (17,11) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (28,15) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (30,23) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (32,16) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (34,17) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (36,15) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (38,13) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (40,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (45,9) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (47,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (50,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (52,8) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (55,10) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (57,10) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (60,11) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (64,23) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (65,19) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (66,21) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (68,18) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (71,19) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (73,29) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (76,23) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (78,29) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (81,23) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (82,27) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (83,31) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (86,22) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (100,25) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (102,21) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (103,27) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (104,31) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (108,29) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (110,23) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (113,22) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (114,22) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (115,22) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (118,17) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (120,32) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (122,13) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (124,11) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (126,13) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (132,9) : Error VBNC30203: Not valid as identifier. /home/rWfWYN/prog.vb (132,9) : Error VBNC30041: Too many errors. Exception of type 'vbnc.TooManyErrorsException' was thrown. at vbnc.Report.ShowMessage (Boolean SaveIt, vbnc.Message Message) [0x00080] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Report.vb:342 at vbnc.Report.ShowMessage (Messages Message, Span Location, System.String[] Parameters) [0x00000] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Report.vb:259 at vbnc.Report.ShowMessage (Messages Message, System.String[] Parameters) [0x00054] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Report.vb:269 at vbnc.Compiler.Compile () [0x005a3] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Compiler.vb:651 at vbnc.Compiler.Compile (System.String[] CommandLine) [0x00057] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Compiler.vb:279 at vbnc.Main.Main (System.String[] CmdArgs) [0x0000f] in /var/tmp/portage/dev-lang/mono-basic-2.4.2/work/mono-basic-2.4.2/vbnc/vbnc/source/General/Main.vb:55 Failed compilation took 00:00:00.5714980
Standard output is empty