Excel VBA

【Excel VBA】【マクロ】【Tips】VBSでファイルをコピー

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

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

VBSでファイルをコピー

VBSで指定したファイルを同じディレクトリにコピーするVBSを作成してみましょう!

コード

Option Explicit

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
Else
    WScript.Quit
End If

msgbox "完了!"

コードの説明

「Option Explicit」で、変数の宣言を強制しています。
変数を宣言します。VBSはデータ型を省略します。
CreateObjectでExcelアプリケーションへの参照を作成します。
こうすることでExcelの機能を利用してファイル選択ダイアログからファイルパスを取得することができます。
※取得するファイルは今回テキストファイルに限定しています
ファイルが選択された場合はbuf変数にフルパスが入っていますので、
If文の中に入ります。
コピーした後のファイル名を作成します。Replace関数を使用して元のファイル名の後に「_コピー後」とつけるよう指定します。
CreateObjectでFileSystemObjectオブジェクトのインスタンスを作成し、ファイル操作が行えるようにします。
FileSystemObjectのCopyFileメソッドを使用し、コピー元のファイルパス、コピー後のファイルパスを指定し、
ファイルをコピーします。
3つ目の引数overwriteにTrueを指定すると、同じ名前のファイルが既にある場合上書きされます。
Falseを指定するとエラーが返されます。省略した場合はTrueとみなされます。
最後に「完了!」のメッセージを出して処理を終了します。
なお、ファイルが選択されなかった場合は、If文のElseに入り、処理を強制終了させています。

さいごに

VBSでファイルをコピーする方法をご紹介しました。
次回はVBSでテキストファイルの中身を書き換える方法をご紹介します!

Lenoco

COMMENT

メールアドレスが公開されることはありません。