※ ChatGPTを利用し、要約された質問です(原文:VBS について)
VBSについて: フォルダ内のabcファイルをhtmlファイルに変換するスクリプトで')'がないエラーが発生する
このQ&Aのポイント
VBSでフォルダ内のabcファイルをhtmlファイルに変換するスクリプトを実行すると、')'がないというエラーが発生します。
初めてVBScriptを使い、HTMLも未経験の場合、スクリプトの作成過程で')'が抜けている可能性があります。
エラーの原因を調査し、スクリプトを修正することで問題を解決できるはずです。
以下のスクリプトは、あるフォルダ以下の(サブフォルダを含む)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
お礼
やってみます! すばやいご回答、ありがとうございます!