vbscript ファイルのマージ
VB初心者です。
C:\test配下の複数のファイルをマージする便利ツールを只今作成中なのですが、
下記プログラムを実行すると「If aryStrings(3) = "yes" Then」の行に対し、
「Subscript out of range」というエラーメッセージが表示されます。
マージの対象としているファイルの中身は次のようなイメージです。
100,101,102,yes,104,105,106,107,108,109,110,111
101,101,102,no,104,105,106,107,108,109,110,111
102,101,102,yes,104,105,106,107,108,109,110,111
103,101,102,no,104,105,106,107,108,109,110,111
104,101,102,yes,104,105,106,107,108,109,110,111
出力データ(output.txt)を見ると正常に処理されているようなのですが
なぜこのようなメッセージが表示されるのかご教授いただきたいです。
お手数ですが宜しくお願い致します。
プログラム
--------------------------------------------------------------------------------------------------------------------------
Dim FileName
Dim fso,baseFolder
Dim frFile,toFile
Dim mFile
Dim strLine1,strLine
Dim aryStrings
Dim msg
FileName = InputBox("ファイル名を入力してください","ファイル名入力","output")
Set fso = CreateObject("Scripting.FileSystemObject")
Set baseFolder = fso.GetFolder("C:\test")
Set toFile = fso.OpenTextFile("C:\test\" & FileName & ".txt" ,2 , True)
For Each mFile In baseFolder.Files
Set frFile = fso.OpenTextFile("C:\test\" & mFile.Name , 1)
Do While frFile.AtEndOfStream <> True
strLine1 = frFile.ReadLine()
aryStrings = Split(strLine1, ",")
If aryStrings(3) = "yes" Then
strLine = aryStrings(0) +" "+ aryStrings(1) +" "+ aryStrings(9) +" "+ aryStrings(10) +" "+ aryStrings(11)
toFile.Write strLine & vbCrLf
Else
End If
Loop
frFile.Close
Set frFile = nothing
Next
toFile.Close
msg = "処理終了"
MsgBox msg
--------------------------------------------------------------------------------------------------------------------------
お礼
ありがとうございます! ActivePresentation.Saved = Trueの件、確かめてみると、おっしゃるとおり、 入った変更が保存されずに終わっていたようです。 こちらの行は削除して、お教え頂いた下記をいれたところ、 きちんと変更が保存された状態で閉じられていました。 ありがとうございます_(_ _)_ ActivePresentation.Save ' これでファイルを保存 ActivePresentation.Close ' これでファイルをクローズ ただ、やはり実行時間は変わらず、長々と砂時計が表示され・・(;_;) デバックのステップイン実行で動作を観察すると、 常にForループの繰り返し毎に、 Presentations.Open FileName:=ActivePresentation.Path & "\" & File.Name の行で毎回、ばばばっと、1瞬だけ全ファイル開いて閉じた、みたいな表示がされます。 その後の行では、1ファイルずつ開かれて変更して閉じて・・と希望通りの動作をしてくれてるのですが、、 そういう仕様なのですかね。。素人の疑問ですみません。。
補足
すみません!下の「お礼」を書いてから、気づいたのですが・・・orz 「ばばばっと、1瞬だけ全ファイル開いて閉じた、みたいな表示」という のは・・、そのpptmに含まれているマクロの標準モジュールでした・・。 テストに使っていた同ファイル内のファイルたちが、 実はpptではなく、pptmで、それぞれかなりたくさんの マクロ標準モジュールを持っていたため、開くたびにそれらが、 開きっぱなしのVB Editorにロードされていただけでした。。 マクロを持っていないpptで実行したら、 砂時計など出てこずに実行できました! 大変失礼いたしました。ありがとうございました_(_ _)_