• ベストアンサー

ファイル結合について

.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

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

ファイルがあるかどうかは 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などで どのようなメソッドやプロパティがあるのかを調べましょうね

kotachata
質問者

お礼

ご返事ありがとうございます。 今後はMSDNなども調べさせていただきます。 ありがとうございました。

その他の回答 (3)

  • kikujack
  • ベストアンサー率47% (17/36)
回答No.4

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

kotachata
質問者

お礼

ご返事ありがとうございます。 こちらでもVBSとVBAがわかっていなくて申し訳ございません。 今回はありがとうございました。

  • kikujack
  • ベストアンサー率47% (17/36)
回答No.2

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

kotachata
質問者

補足

ご返事ありがとうございます。 早速試してみたのですが「dir」の部分で 「型が一致しません。」とエラーがでてしまいます・・・。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

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 といった具合で出来ると思います

kotachata
質問者

補足

早速のご返事ありがとうございます。 記載していただきました内容で対象ファイルが0KBの場合は ファイルに書き込まないようになりました。 ただ、ファイルが存在していない場合に「ファイルが存在しません」と エラー画面がでてしまいます。 ファイルサイズが0KBと同様にエラー画面を出さないようにしたいのでどのような記述をしたらよろしいでしょうか。

関連するQ&A

専門家に質問してみよう