プロが教える店舗&オフィスのセキュリティ対策術

VBScriptで指定行に文字列を挿入したいと思っていますが可能でしょうか?
例:)2行目に挿入
前    後
1    1
2    挿入列
3    2
     3

先頭から呼んでいき WriteLineを… と思ったのですが、最後尾に追加でした^_^;
で、新規ファイルに順に呼んで(前)を削除、(後)をリネーム。と考えたのですが、スマートではありません。
なにかよいメソッドはあるのでしょうか?

A 回答 (2件)

'----------- ファイルシステムオブジェクト作成


Set objFso = CreateObject("Scripting.FileSystemobject")

'----------- 定数の作成
Const ForReading = 1                                  '読取フラグ
Const ForWriting = 2                                   '書込フラグ
Const ForAppending = 8                                 '追記フラグ

Const InsertLine = 2                                   '文字列の挿入行
Const InsertText = "Inserted!"                             '挿入する文字列

Const strPath = "test.txt"                               '処理するテキストファイルのパス

'----------- ファイルが存在することを確認
If objFso.FileExists(strPath) = False Then
MsgBox "指定のファイルがみつかりません"
WScript.Quit                                      'なければ終了
End If

'----------- テキストの行数を確認
Set objRead = objFso.OpenTextFile(strPath , ForReading)            '読取モードでテキストを開く
objRead.ReadAll                                      '全部読むことで最終行へ移動
intLine = objRead.Line                                  '現在の行数を確認
objRead.Close                                       '読取モード閉じる

'----------- テキストの挿入
If intLine <= InsertLine Then                              '挿入行がテキストの行数より大きいか、同じの場合

  Set objAppending = objFso.OpenTextFile(strPath , ForAppending)      '追記モードでテキストを開く
  objAppending.WriteLine InsertText                         '挿入行の追記
  objAppending.Close                                  '追記モード閉じる

Else                                             '挿入行がテキストの行数より小さい場合

  Dim WritingText                                    '書込用の文字列(省略可)
  Set objRead2 = objFso.OpenTextFile(strPath , ForReading)          '読取モードでテキストを開く
  i = 1                                           '行数の確認用の数値
  Do Until objRead2.AtEndOfStream = True                    '終了行まで繰り返し
    If i = InsertLine Then                               '挿入行が来たら、文字列を挿入
      WritingText = WritingText & InsertText & vbCrLf            'vbCrLfは改行コード
    End If

    WritingText = WritingText & objRead2.ReadLine & vbCrLf        '1行読み取り、書込用の文字列に追加
    i = i + 1                                       '読み取った行数を1増やす
  Loop

  objRead2.Close                                    '読取モード閉じる

  Set objWriting = objFso.OpenTextFile(strPath , ForWriting)          '書込モードでテキストを開く
  objWriting.Write WritingText                             '書込用の文字列値を一気に書込み
  objWriting.Close                                    '書込モード閉じる

End If

'----------- 完了メッセージ
MsgBox "挿入完了"




見やすくするため全角スペースを入れてあります。
    • good
    • 0

1.新規ファイルに元ファイルから指定行の前までコピー


2.指定行に挿入
3.元ファイルの残りをコピー

こんなのでどうでしょう?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A