- ベストアンサー
VB6.0特定位置書き換え
- VB6.0で特定の行からCSVを削除、書き込む方法について教えてください。
- SkipLineを使用して特定の行を指定するとエラーが発生し、ファイルモードが不正ですと表示されます。
- OpenTextFileの第二、第三引数はファイルのモードを切り替えるための引数です。具体的な使い方を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No2.です FileSystemObjectでは、連続したファイルの内容を途中から変更等は難しいと思います。 FileSystemObjectを利用するのであれば、 1.読込み側のファイルをオープンする 2.適当な名前のファイルを書き込みモードでオープンする。 3.読み込み側、1行読み込む 4.書き込み側、読み込んだ行を修正し(?)書込み 3.4.繰り返し 5.両方のファイルを閉じる 6.読み込み側ファイル削除 7.書き込み側ファイル名前変更(読み込み側ファイル名に変更) Openメソッドを利用したCSVのアクセス方法は下記URLを参照してみて下さい
その他の回答 (3)
- YUI_AI
- ベストアンサー率45% (303/661)
個本的にその様な処理で良いかと思います。 直接ファイルを操作する場合は、万が一の事も考慮して処理の流れを検討する事が一番重要と思います。 今後は、そのことを念頭に置いてプログラムの作成を進めて頂ければ結構だと思います。
お礼
ご指摘ありがとうございました。 >今後は、そのことを念頭に置いてプログラムの作成を進めて頂ければ結構だと思います。 ご教授していただいた内容を吟味し、今後に生かしていこうと思います。
- YUI_AI
- ベストアンサー率45% (303/661)
なぜ一度、作業ファイルを書き出しているかというと、途中での不慮の事故・障害に対応する為です。 ※元のファイルを削除直後にアプリケーションエラー等が発生した場合、プログラム内のキャッシュも全て消えてしまいます。 ファイル書き込み中であれば、ファイル復活ソフトでも復旧出来なくなる可能性があります。 手間はかかりますが、この方法はかなり有効です。
お礼
おお、確かにそうですね。 そうなると私の場合は 1.読込CSVを全て読込み 2.読込CSVファイル名を変更 3.読込んだデータを修正 4.読込CSVと同名の書込CSVを新規作成 5.修正したデータを書込み 5.5.ここまででエラーが発生した場合 →書込CSV削除 →読込CSVファイル名を戻す 6.読込CSV削除 こんな感じでよろしいでしょうか。
- YUI_AI
- ベストアンサー率45% (303/661)
>Set objTxtSt = objFso.OpenTextFile(strPass, 8, -1) 2番目の引数は追記(ForAppending)モードなので削除等は出来ないのでは。
お礼
回答ありがとうございます。 OpenTextFileの引数に関しては、参考サイトより理解できました。 有難うございます。 Set objTxtSt = objFso.OpenTextFile(strPass, 2, -1) とし、再度実行したところ同様のエラーが発生しました。 どのようにすればよいでしょうか。
お礼
回答ありがとうございます。 提示いただいたやり方の場合 1.一度元となるCSVを全て読込み 2.元となるCSV削除 3.読込んだデータを修正 4.同名のCSVを新規作成 5.修正したデータを書込み 現在以上のようにしているのですが、これとほぼ手間が変わらないように思います。 >FileSystemObjectでは、連続したファイルの内容を途中から変更等は難しいと思います。 参考サイトより、Openメソッドについて調べてみました。 しかしここにあるものもFileSystemObjectと同様に、ファイルの行数を指定しての読込みは不可能のように思います。 間違っていたら申し訳ありません。