- ベストアンサー
ファイル結合について
.vbsを使用して複数のテキストファイルを1つのテキストファイルに結合したいと思っております。 条件として対象ファイルが0KB及びない場合には追記しない。 結合部分に関しては下記で追記することができたのですが 条件部分に関してはFilelen?を使用するとファイルサイズを取得できるみたいなのですが 実際の記述がわかりませんでした。 ご教授頂けると助かります。 ■追記部分 Set logFile = fso.GetFile(logFile) Set f = logFile.OpenAsTextStream(8, -2) Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile(srcFile) myText = objText.ReadAll 'ExecDateTime = Now f.Write(myText & vbNewLine) f.close '解放 Set f = Nothing Set logFile = Nothing Set fso = Nothing
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ファイルがあるかどうかは FSOのFileExistsで確認可能ですよ Set objFS = CreateObject("Scripting.FileSystemObject") if objFS.FileExists( srcFile ) then Set objFile = objFS.GetFile( srcFile ) if objFile.Size > 0 then Set objFile = Nothing Set objText = objFS.OpenTextFile(srcFile) myText = objText.ReadAll 'ExecDateTime = Now f.Write(myText & vbNewLine) f.close End if Set objFile = Nothing end if といった具合でいいと思います # MSDNなどで どのようなメソッドやプロパティがあるのかを調べましょうね
その他の回答 (3)
- kikujack
- ベストアンサー率47% (17/36)
redfox63さんおしゃったとおりです。VBSとVBA間違いました。DIRはVBAの関数です。 Set objFS = CreateObject("Scripting.FileSystemObject") if objFS.FileExists( srcFile ) then Msgbox "ファイルがないです" else Set objFile = objFS.GetFile( srcFile ) if objFile.Size > 0 then Set objFile = Nothing Set objText = objFS.OpenTextFile(srcFile) myText = objText.ReadAll f.Write(myText & vbNewLine) f.close else Msgbox "ファイルは0KBです" End if Set objFile = Nothing end if
お礼
ご返事ありがとうございます。 こちらでもVBSとVBAがわかっていなくて申し訳ございません。 今回はありがとうございました。
- kikujack
- ベストアンサー率47% (17/36)
redfox63さんのコードを基礎に修正しました。 if Dir(srcFile)="" then Msgbox "ファイルがないです" else Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.GetFile( srcFile ) if objFile.Size > 0 then Set objFile = Nothing Set objText = objFS.OpenTextFile(srcFile) myText = objText.ReadAll f.Write(myText & vbNewLine) f.close else Msgbox "ファイルは0KBです" End if Set objFile = Nothing end if
補足
ご返事ありがとうございます。 早速試してみたのですが「dir」の部分で 「型が一致しません。」とエラーがでてしまいます・・・。
- redfox63
- ベストアンサー率71% (1325/1856)
FileオブジェクトのSizeプロパティを参照するのではないかと思います Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.GetFile( srcFile ) if objFile.Size > 0 then Set objFile = Nothing Set objText = objFS.OpenTextFile(srcFile) myText = objText.ReadAll 'ExecDateTime = Now f.Write(myText & vbNewLine) f.close End if Set objFile = Nothing といった具合で出来ると思います
補足
早速のご返事ありがとうございます。 記載していただきました内容で対象ファイルが0KBの場合は ファイルに書き込まないようになりました。 ただ、ファイルが存在していない場合に「ファイルが存在しません」と エラー画面がでてしまいます。 ファイルサイズが0KBと同様にエラー画面を出さないようにしたいのでどのような記述をしたらよろしいでしょうか。
お礼
ご返事ありがとうございます。 今後はMSDNなども調べさせていただきます。 ありがとうございました。