Excel VBA

【Excel VBA】【マクロ】【Tips】VBSでテキストファイルを書き変える

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回はVBSについてのTips回です!!!

VBSでテキストファイルを書き変える

Excelのマクロでテキストを触れるのはよく知られているかなと思いますが、VBSでもできます!
VBSファイルを実行するだけで決まった処理ができたら楽ですよね(*’ω’*)
そんなVBSを作ってみましょう!

VBSを準備

ダイアログボックスからテキストファイルを選択して、
改行をタブに置き換えるということをやってみたいと思います。
前回作成した、指定したファイルをコピーするVBSに処理を組み込んでみたいと思います。

コード

Option Explicit

Dim MyFile 
Dim myRec
Dim FS
Dim excel
Dim buf
Dim newFile

'テキストファイルの選択
Set excel = CreateObject("Excel.Application")
buf = excel.GetOpenFilename("Text File,*.txt,All,*.*",1,"ファイルを選択して下さい","開く",false)

If buf <> False Then
    newFile = replace(buf ,".txt","_変換後.txt")
    Set FS = CreateObject("Scripting.FileSystemObject")
    FS.CopyFile buf, newFile, True
    Set MyFile = FS.OpenTextFile(newFile)

    'テキストデータ読込
    myRec = MyFile.ReadAll
    'テキスト変換
    myRec = replace(myRec,vbCrLf ,vbTab)
    MyFile.Close

    '書き込み
    Set MyFile = FS.CreateTextFile(newFile)
    MyFile.WriteLine (myRec)
    MyFile.Close
Else
    WScript.Quit
End If

msgbox "完了!", vbSystemModal

コードの説明

新しく追加したところのみ説明していきます!
テキストファイルを新規ファイル名でコピーした後に、
読込み用として、OpenTextFileメソッドを使ってそのテキストファイルを開きます。
ReadAllメソッドで、テキストファイル内の全ての文字を読み込みます。
Replace関数を使い、改行をタブに置き換えます。
読込み用に開いたテキストファイルは閉じます。
続いて書き込み用に、CreateTextFileメソッドで同じファイルを指定します。
CreateTextFileメソッドを実行すると、新規ファイル(0サイズ)が作成され、開かれます。
置き換えを行った文字列を書き込みます。
ファイルを閉じます。

ちょっと補足

    FS.CopyFile buf, newFile, True
    Set MyFile = FS.OpenTextFile(newFile)

上記2行を以下1行にしても動きました。

  Set MyFile = FS.OpenTextFile(buf)

読込み用のテキストファイルを元ファイルを指定しています。
書き込み用には新しいファイルのパスを指定することで新規ファイルが作成されるので、
コピーの処理は特に必要ありませんでした。

さいごに

動きは同じなので、お好きなほうを試してみてください!

Lenoco

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です