• 締切済み

ファイル操作

ExcelVBAでテキストファイルを読み込み、特定の文字を置換したいと思っています。 Openステートメントでinputを使うと読み込みで、outputを使うと書き込みなのは、わかります。 ただ更新の仕方がわからないのです。 よろしかったら教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1でおっしゃることは、大切なことです。 置換については、変数にレコードの文字列を入れたものを対象に (1)置換対象文字を見つけなければなりません Instr関数で見つけます (2)見つかった位置の前までの文字列をMid関数で切り出します (3)置換対象文字列は捨てます (4)それ以後の文字列をMid関数で切り出します (5)(2)+置換後の文字列+(4)を&で連接します. 置換文字列が複数ありえるときは、(2)+置換後の文字列。 残りの文字列に対し(1)、(2)、(5)を繰り返す。 (6)新しいレコードとして書き出します。Print #ステートメントを使う。 (7)レコード内に置換文字列が2つ以上あるときは、INSTRの第1引数のスタート位置を変えて、順次尺取虫のように、置換文字列が見つからなくなるまで、上記を繰り返します。ただし(4)は最後だけ行うになります。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

固定長レコードでない一般的な不定長のテキストファイルの場合 そのファイル自身をいきなり更新ということはできません。 入力ファイルを読込、更新して出力ファイルに書き出し 終了後入力ファイルを削除、出力ファイルを入力ファイル名に名前の変更のような手順になると思います。

関連するQ&A

  • ファイルの読み込みについて

    いつもお世話になっています。 早速質問なのですが、VBのファイル処理において固定長データのテキストファイル読み込みの処理で、 固定長データの改行コードがChr(10)になっているデータがあります。 下記のどのOpenステートメントを使用しても、1行読み込みではなく全行読み込まれてしまうのです。 ↓ファイルモード (1)Open strInFile For Input As #intInFile (2)Open strInFile For Random As #intInFile Len=文字数 (3)Open strInFile For Binary As #intInFile ちなみに読み込みのモードは ・Line Input ステートメント ・Get ステートメント の2つを使用してみました。 改行コードの種類に依存せずにデータを1行読み込む方法を教えていただきたいです。

  • ExcelVBAで扱うテキストファイルデータ

    MSOffice2003のExcelVBAでテキストファイル(文字コードはUTF-8)内の全角文字データを入力し、そのまま更新しないで、別ファイル名で出力したら、文字化け(ANSI化)した。どうすればUTF-8のまま出力できますか? 「(フ)」(X'EFBBBFEFBC88E38395EFBC89')がX'8145BF814588E3839581458145'に化けます。 テキストファイルはCreateObject("Scripting.FileSystemObject")を定義して、 入力は、Open F_in For Input As #1でOPENし、Line Input #1, I_bufで入力し、 出力は、Open F_out For Output As #2でOPENし、Print #2, I_bufと出力した。

  • 外部ファイル操作について

    外部ファイルへの入出力のやり方についてアドバイスお願いします。 外部ファイルは 書き込み専用(Sample.txtの内容を書き込む)のファイル「Test.txt」と 書き込む内容を記載してあるファイル「Sample_01.txt」と「Sample_02.txt」の2種類を用意しておきます。 「Sample_01.txt」には 1.おはよう 2.こんにちは 3.こんばんは Sample_02.txt」には 1.いただきます 2.ごちようさま 「Test.txt」の1行目には 【Sampleテキストの内容】 という文字列をそれぞれ初めから記載しておきます。 ファイルの読み込み・書き込みにおいて、「Test.txt」に1行目(【Sampleテキストの内容】 )を消さずに読み込み・書き込みするにはどうしたらよいのでしょうか。 また、「Test.txt」に1行目に【Sampleテキストの内容】という文字列が存在するかを判定するにはどうしたらよいのですか。 お手数ですが、アドバイスお願いします。 出力はDOS画面に行います。

    • ベストアンサー
    • Java
  • テキストファイルを読み込み 偶数行の特定の文字を置換するには?

    お世話になります。 vb6なんですけどテキストファイルを読み込んで 偶数行のある文字を置換したいんですけど このサンプルをどういう風に改変して偶数行の文字列をある文字列に 置換するコードを書いてよいのかわかりません。 置換するのはreplace関数を使うと思うのですが。 教えて下さい。お願いします。 Dim n As Long, tmp As String n = FreeFile Open "D:\Test.txt" For Input As #n Line Input #n, tmp Close #n

  • VB6.0 テキストファイルの操作について

    最近FileSystemObjectを覚えた者です。そこで質問なんですが、 FileSystemObjectを使用すると様々なテキストファイルの操作が可能ですが、Openステートメントでも同じようなことができると思うのですが、この二つの手法の長所と短所と、使用例など教えていただけたらと思います。よろしくお願いします。

  • VBA ファイル操作について

    はじめまして、VBA初心者の者です。 早速ですが、 エクセルマクロで「テキストファイルを開く」という操作を行いたいと思っています。 ここで言う「開く」は、読み込み/書き込み用に開くのではなく、テキストファイル自体を開いて、内容を画面上に表示するという意味です。 なにか良い関数や方法がございましたら、お教え願います。 よろしくお願いします。

  • VBでのテキストファイルの 読み込み & 書き出し について

    テキストファイルの中味を全部読み込んで、テキストボックスに表示するというコードをOpenステートメントを使って書いています。 その際、1つの種類のデータを1つのテキストファィルとして書き出し&読み込み しているのですが、これですと種類が増えていくとともにテキストファイルの 数もどんどん増えてしまい効率が悪いです。 で、それらを1つのテキストファイルにまとめておいて、中をセクションに 区切って、それを読み込み&書き出しする方法はあるのでしょうか? データが1行ですと分かるのですが、それぞれが長いテキストデータを1つの テキストファイルに区切って書き出し&読み込みする方法が分かりません。 どなたか教えてください!!!!!!! よろしくお願いします。

  • ExcelVBAでファイルを開く時に使用中のファイルでないか調べる方法を教えてください。

    ExcelVBAの勉強を始めて間もない者です。 Office2000のExcelでマクロを作成しています。 テキストストリームオブジェクトを作成してファイルを開き、 ファイルの内容をセルに展開するプログラムを書いているのですが、 開こうとしているファイルが他のプロセスで開かれているかどうかを調べる方法はありませんか? Openステートメントを使用すればロックをかけることができるので、 エラーを発生させることができるみたいなのですが、 テキストストリームオブジェクトを使用してファイルを開いている場合に 開くファイルが他のプロセスで使用してるか調べる方法が知りたいです。 説明がわかりにくいとは思いますがよろしくお願いします。

  • 指定列を抜き出す

    V1 , V2 , V3 , V4 , V5 , V6 5.9, 3.9, 0.7, 3.9, 5.8, 5.1 4.1, 6.4, 3.8, 3.3, 5.8, 9.3 3.1, 2.3, 1.8, 2.7, 3.6, 5.6 6.8, 4.2, 2.1, 3.3, 4.9, 5.1 2.3, 0.3, -1.7, -2.1, -1.7, 1.10 8.0, 4.7, 3.7, 6.9, 6.2, 5.5 さらに続く 上記のようなテキストデータがファイルAに入っており これからV1,V3,V5のデータだけを抽出し、 ファイルBに格納するプログラムを作成中なのですが、 データの読み込みと書き込みの部分は作成したのですが、 どのようにすれば抽出できますでしょうか? ソフトはVB6です。よろしくお願いします 'ファイル読み込み Open "C:\A.txt" For Input As #1 FlLen = LOF(1) txt = Input(FlLen, #1) Close #1 'ファイル書き込み Open "C:\B.txt" For Output As #1 Print #1, txt Close #1

  • バッチファイルでテキストファイル内の特定の文字列をコンピュータ名に置換

    バッチファイルでテキストファイル内の特定の文字列をコンピュータ名に置換したい バッチファイルの記述方法について教えて下さい。 テキストファイル内に特定の文字列が存在していた場合、その文字列をバッチファイルを実行するPCのコンピュータ名で置換するにはどのように記述したら良いでしょうか。 なおPCはWindowsXPを使用しています。