dポイントプレゼントキャンペーン実施中!

out.csvファイルに追記していくにはどのように記述すればいいのでしょうか?
アドバイス下さい。

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\test.csv")
'objFile.ReadLine
Do While Not objFile.AtEndOfStream
StrLine = objFile.ReadLine
MyString = split(StrLine,",")

'msgbox Mid(MyString(0),2,10)
'MyString = split(objFile.ReadLine,",")
if Mid(MyString(0),2,10) = "(PDH-CSV 4" then
Set objWFile=objFSO.OpenTextFile("c:\out.csv",2,true)
objWFile.write(StrLine)
msgbox "!!!"
end if
'
if Mid(MyString(0),2,10) = DateString then
Set objWFile=objFSO.OpenTextFile("c:\out.csv",2,true)
objWFile.write(StrLine)
''msgbox Mid(MyString(0),2,10)
msgbox "???"

end if

loop
objFile.close

Set objFSO = Nothing
Set objFile = Nothing

A 回答 (5件)

あ、、、見落としてました(==;



>ファイルが開いたままになっている為、開けないと言っているのでしょうか?

そうです。
同じファイルを2つ同時にopenする事は、出来ません。
書き込み前に out.csvファイルをいったん close
してください。

てより、、、open処理が繰り返し内にあるのか(=w=;
Do Loop から外出しした方がいいかも、、。
もしくは、初めの一回だけOpenするように、flag持たすとか。

この回答への補足

書き込み用ファイルをloopの外に出したんですが、if文の中で追記するようにするにはどのようにすればいいのでしょうか?
また、Flagを立てるとはどういう事でしょうか?恐れ入りますが、アドバイスの方宜しくお願い致します。

補足日時:2005/09/27 02:30
    • good
    • 0

気になったんですが、、(==; 宿題とかじゃないよね、、。



とりあえず、面倒なので、書いちゃいます。

(略)
' ここ、処理毎に新規でファイル作成の場合は 2
' 前回処理の内容を残すなら 8
Set objWFile=objFSO.OpenTextFile("c:\out.csv",8,true)

Do While Not objFile.AtEndOfStream
StrLine = objFile.ReadLine
MyString = split(StrLine,",")

if Mid(MyString(0),2,10) = "(PDH-CSV 4" then
objWFile.write(StrLine)
msgbox "!!!"
end if

if Mid(MyString(0),2,10) = DateString then
objWFile.write(StrLine)
msgbox "???"
end if
loop

objFile.close
objWFile.close

Set objFSO = Nothing
Set objFile = Nothing


>Flagを立てるとはどういう事でしょうか
忘れてください。(--; やり方のひとつですから、。
    • good
    • 0
この回答へのお礼

上手くいきました。色々とありがとうございました。

お礼日時:2005/09/28 01:52

'800A0046'


は、書き込み権限のエラーです。
IIS なら、
IIS設定の「匿名アクセスで使用されるアカウント」
をAdmin権限に変更してください。

また、前回動かしたASPがファイル掴んだままになって
落ちた場合もそんな風になったから、、、
一応再起動確認もしてみてください。

この回答への補足

アクセス権は問題なく、再起動しても変わりません。

読み込むCSVが、
"09/26/2005 0:00:00,aaa,bbb,ccc"
"09/26/2005 0:00:15,aaa,bbb,ccc"
"09/26/2005 0:00:30,aaa,bbb,ccc"
"09/26/2005 0:00:45,aaa,bbb,ccc"
"09/26/2005 0:01:00,aaa,bbb,ccc"
と言った感じにログがあります。
日付で比較し一致したら、ファイルに追記する仕様なんですが、1行目を書き込んだ際に、ファイルが開いたままになっている為、開けないと言っているのでしょうか?

補足日時:2005/09/26 22:25
    • good
    • 0

>エラーが出力され追記できない状態となっています


エラーメッセージは何と言っていますか?

この回答への補足

>エラーメッセージは何と言っていますか?
エラー内容:書き込みできません
エラーコード:800A0046

以上、宜しくお願い致します。

補足日時:2005/09/26 20:07
    • good
    • 0

ForReading1


ファイルを読み取り専用として開きます。このファイルには書き込むことができません。
ForWriting2
ファイルを書き込み専用として開きます。
ForAppending8
ファイルを開き、ファイルの最後に追加して書き込みます。

例:
fso.OpenTextFile("c:\out.csv", ForAppending, True)

要は、
Set objWFile=objFSO.OpenTextFile("c:\out.csv",2,true)
の 2 が 間違い

この回答への補足

レスありがとうございます。
2→8に変えてみたんですが、エラーが出力され追記できない状態となっています。何故なんでしょうか?アドバイス下さい。

補足日時:2005/09/26 18:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!