ファイルの追記書きについて


匿名  2004-12-17 21:01:05  No: 118371  IP: [192.*.*.*]

指定ファイルをオープン後、その指定ファイルのしりに
WriteLineを使用してファイルの追記書きは可能でしょうか?

処理例としては、A.txtの内容を1行ずつ読込んで変数に保存し、
その保存したデータをB.txtに1行ずつ追記書きしたいと考えております。

どなたか詳しい方、是非教えてください!

編集 削除
Dental  2004-12-18 00:36:00  No: 118372  IP: [192.*.*.*]

> 追記書きは可能でしょうか?
可能か不可能か、という事なら可能です。
ファイルを開くときに追記モードを指定してください。

(詳細はヘルプで調べてみてください)

編集 削除
ひろ  2004-12-18 13:10:38  No: 118373  IP: [192.*.*.*]

バイナリモードで追記したい場合はファイルポインタを末尾に移動すればOK
 (ただし、Longの最大値よりバイト数の多いファイルには使用できません)

   Open filename For Binary As #fileNo
   Seek #fileNo, , LOF(fileNo) + 1

編集 削除
匿名  2004-12-18 17:30:44  No: 118374  IP: [192.*.*.*]

皆さんレス有難う御座います。
今回はReadLineとWriteLineを使って
処理をしたいと考えております。

ヘルプを見て追記モードにしてみたんですが
エラーで落ちます。

下記にソースを記述しますので
アドバイス頂けないでしょうか。
宜しくお願い致します。


*********************************************************
'(test1.txtの内容をtest2.txtに追記書きしたい)

Private Sub Form_Load()

    On Error GoTo ErrHandler

    Dim strFileName  As String
    Dim strFileName2 As String
    Dim strGetLine   As String
    Dim objFs        As Object
    Dim objFile      As Object
    Dim objFile2     As Object
    
    strFileName = "C:\work\test1.txt"
    strFileName2 = "C:\work\test2.txt"
    
    Set objFs = CreateObject("Scripting.FileSystemObject")
    
    Set objFile = objFs.OpenTextFile(strFileName)
    Set objFile2 = objFs.OpenTextFile(strFileName2, ForAppending)
    ↑ここで落ちます。

    Do While objFile.AtEndOfLine <> True

        strGetLine = objFile.ReadLine
        objFile2.WriteLine (strGetLine)

    Loop
    
    objFile.Close
    objFile2.Close
    
Exit Sub

ErrHandler:

    ret = MsgBox(Err.Description, vbCritical, "警告")
    End
    
End Sub

編集 削除
030  2004-12-18 21:31:35  No: 118375  IP: [192.*.*.*]

落ちますとか書かずにエラーの内容とか書いてみてはどうですか?


予想するところはMicrosoft Scripting Runtimeを参照設定していないから
ForAppendingが定義されていなくてエラーになっているような気がするけど
ヘルプを見たんだったら、そこにForAppendingじゃなくて直接値を入れて見たら?

編集 削除
聖 羅樹  URL  2004-12-18 22:53:44  No: 118376  IP: [192.*.*.*]

その程度であれば、
Open, Line Input, Print, Close で十分な気がします。
Open の時に読み込み側を For Input で、書き込み側を For Append で
開いてやれば、同じことができます。

編集 削除
花ちゃん  2004-12-19 08:21:21  No: 118377  IP: [192.*.*.*]

下記ではどうでしょう。

Shell "command.com /c copy c:\AFile + c:\BFile CFile", 1

編集 削除
匿名  2004-12-19 20:56:44  No: 118378  IP: [192.*.*.*]

>ヘルプを見たんだったら、そこにForAppendingじゃなくて直接値を入れて>見たら?
→Microsoft Scripting Runtimeを参照設定にしても出来ませんでしたが、
  値を入れたら追記書き出来ました。
  030さん有難う御座います。

>Open, Line Input, Print, Close で十分な気がします。
>Open の時に読み込み側を For Input で、書き込み側を For Append で
>開いてやれば、同じことができます。
→聖さんレス有難う御座います。
  最近VBを始めたばっかりなのでOPENとかのやり方が
  まだ分からないんですよね・・・。
  よかったら詳しく教えて頂けないでしょうか?

>Shell "command.com /c copy c:\AFile + c:\BFile CFile", 1
→花ちゃんさんレス有難う御座います。
  このコマンドを使うとA、Bファイルをマージした
  CFileが出来るのでしょうか?

編集 削除
030  2004-12-19 21:36:29  No: 118379  IP: [192.*.*.*]

後からの人が誤解をするといけないので訂正。
>Microsoft Scripting Runtimeを参照設定にしても出来ませんでしたが、
参照すればできます。
できないのは何か操作を誤っています。

編集 削除
花ちゃん  2004-12-19 23:27:02  No: 118380  IP: [192.*.*.*]

>→花ちゃんさんレス有難う御座います。
>  このコマンドを使うとA、Bファイルをマージした
>  CFileが出来るのでしょうか?

サンプルを書いているのだから自分で試して見たら、それから質問するのが
普通じゃないでしょうか?

編集 削除