• 締切済み

VBSで指定行に挿入

VBScriptで指定行に文字列を挿入したいと思っていますが可能でしょうか? 例:)2行目に挿入 前    後 1    1 2    挿入列 3    2      3 先頭から呼んでいき WriteLineを… と思ったのですが、最後尾に追加でした^_^; で、新規ファイルに順に呼んで(前)を削除、(後)をリネーム。と考えたのですが、スマートではありません。 なにかよいメソッドはあるのでしょうか?

みんなの回答

  • MidKnight
  • ベストアンサー率57% (20/35)
回答No.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 "挿入完了" 見やすくするため全角スペースを入れてあります。

noname#44015
noname#44015
回答No.1

1.新規ファイルに元ファイルから指定行の前までコピー 2.指定行に挿入 3.元ファイルの残りをコピー こんなのでどうでしょう?

関連するQ&A