エクスプローラーでフォルダを開く

エクスプローラーでフォルダを開く方法です。

'構文
Dim objShell
Set objShell = WScript.CreateObject("Shell.Application")
objShell.Explore "開きたいフォルダのパス"

'実行例
Dim objShell
Set objShell = WScript.CreateObject("Shell.Application")
objShell.Explore "C:\test"

フルパスからファイル名を取得する

フルパスからファイル名を取得する方法です。

例えば「C:\test\Book1.xlsx」の時、「Book1.xlsx」を取得します。

Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
'ファイル名をメッセージボックスで表示する
msgbox fs.GetFile("ファイルパス").Name


'実行例
Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
'ファイル名をメッセージボックスで表示する
msgbox fs.GetFile("C:\test2\Book3.xlsx").Name  ' 結果:Book3.xlsx

 

 

フルパスからフォルダパスを取得する

フルパスからフォルダパスを取得する方法はこちらで紹介しています。

 

 

フルパスからフォルダパスを取得する

フルパスからフォルダパスを取得する方法です。

例えば「C:\test\Book1.xlsx」の時、「C:\test\」を取得します。

Dim fs
Dim folderName
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
folderName = Replace("ファイルパス" , fs.GetFile("ファイルパス").Name , "")

'フォルダ名をメッセージボックスで表示
WScript.Echo folderName                           'フォルダパスを表示
WScript.Echo mid(folderName,1,len(folderName)-1)  '最後の"¥"取り除いたパターン


'実行例
Dim fs
Dim folderName
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
folderName = Replace("C:\test\list1.txt" , fs.GetFile("C:\test\list1.txt").Name , "")

'フォルダ名をメッセージボックスで表示
WScript.Echo folderName                     '結果 : C:\test\
msgbox mid(folderName,1,len(folderName)-1)  '結果 : C:\test

 

 

フルパスからファイル名を取得する

フルパスからファイル名を取得する方法はこちらで紹介しています。

 

 

テキストファイルを読み込み配列に格納する

テキストファイルを読み込み配列に格納する関数です。

 

引数

txtPath:読み込むテキストファイルのパス(フルパス)

 

戻り値

テキストファイルの内容を格納した配列

 

Function readText(txtPath)

    On Error Resume Next

    Dim objFSO      ' FileSystemObject
    Dim objFile     ' ファイル読み込み用
    Dim strArray()  
    Dim lineCount
    lineCount = 0
    Dim strTemp     ' 読み込んだ行の一時格納用

    Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
    If Err.Number = 0 Then
        Set objFile = objFSO.OpenTextFile(txtPath)
        If Err.Number = 0 Then
            Do While objFile.AtEndOfStream <> True

                strTemp = objFile.ReadLine
                Redim Preserve strArray(lineCount)
                strArray(lineCount) =strTemp
                lineCount = lineCount + 1
                
            Loop
            objFile.Close
        Else
            'msgbox("fileOpenErr: " & Err.Description) ' エラー時用(コメントアウト)
        End If
    Else
        'msgbox("Err:" & Err.Description) ' エラー時用(コメントアウト)
    End If

    Set objFile = Nothing
    Set objFSO = Nothing

    readText = strArray

End Function


'上の関数の実行例(実行時はコメントアウトを消してください)
'dim arr
'arr = readText("C:\test\list1.txt")
'msgbox arr(0)

ファイルを移動する

VBScriptでファイルを移動する方法です。

Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.MoveFile 移動元のファイルパス, 移動先のファイルパス

'実行例
Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.MoveFile "C:\test\testfile.txt", "C:\test2\testfile.txt"

 

 

移動先に移動元のファイルが存在する場合は移動できず、エラーになりますのでご注意下さい。

ファイルの存在チェックはこちらをご参考に。

 

 

ファイルをコピーする

VBScriptでファイルをコピーする方法です。

Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.CopyFile コピー元のファイルパス, コピー先のファイルパス

'実行例
Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.CopyFile "C:\test\testfile.txt", "C:\test2\testfile.txt"

 

 

コピー先にファイルがあっても上書きするのでご注意下さい。

ファイルの存在チェックはこちらをご参考に。

 

 

ファイルの存在チェック

VBScriptでファイルの存在チェックをする方法です。

Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(ファイルパス) = True Then
	'ファイルが存在する場合
	msgbox("ファイルが存在します")
else
	'ファイルが存在しない場合
	msgbox("ファイルが存在しません")
End If

'実行例
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists("C:\test\temp2.txt") = True Then
	msgbox("ファイルが存在します")
else
	msgbox("ファイルが存在しません")
End If

 

 

ファイルの存在チェックの関数

上の方法を使ったファイル存在チェックの関数を作りました。

'--------------------------------------------------
' ファイルの存在チェック
' 引数
'   filePath:ファイルのパス(フルパス)
' 返り値
'   True:ファイルが存在する、False:存在しない
'--------------------------------------------------
Function checkFileExists(filePath)
    Dim fs
    Set fs = CreateObject("Scripting.FileSystemObject")
    '存在確認
    checkFileExists = fs.FileExists(filePath)
End Function

' 上の関数の呼び出し例
msgbox checkFileExists("C:\test\temp2.txt")

空のテキストファイルを作成する

VBScriptで空のテキストファイルを出力する方法です。

Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile("出力先のパス(.txt)")

' 実行例
Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile("C:\test\test.txt")

 

 

実行の方法

実行の方法がわからない方は次のようにして下さい。

1.デスクトップ等に「test.vbs」という空のファイルを作成

 

2.メモ帳などで開き、次の文を貼り付け&上書き

Dim fs
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
fs.CreateTextFile("空のファイル.txt")

 

3.test.vbsをダブルクリックして実行する

 

4.「空のファイル.txt」がデスクトップ(=test.vbsと同じフォルダ)に出力されます

ファイル名を取得する

VBScriptで、ファイル名を取得する方法です。

ファイルパスを格納してある変数から、ファイル名だけ取得したい場合などに使用して下さい。

'作成日時を取得する
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo fso.GetFileName("ファイパス") 
'または
WScript.Echo fso.GetFileName(変数)

'実行例
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo fso.GetFileName("C:\test\list1.txt")
'実行結果:list1.txt

配列を宣言する

VBScriptで、配列を宣言する方法です。

'配列を要素数5で宣言する
Dim arr(4)

'配列に値を代入
arr(0) = "a"
arr(1) = "b"
arr(2) = "c"
arr(3) = "d"
arr(4) = "e"

'値を確認
WScript.Echo arr(1)

 

 

配列を宣言する(要素数が変わる場合)

配列の要素数が途中で変わる可能性がある場合、最初に要素数を指定するのではなく、要素数が増える前にReDimを行います。

'配列の要素数はここでは指定しない
Dim arr()

'要素数を指定する
'preserveを付けないと値がクリアされてしまうので注意
ReDim preserve arr(5)
arr(0) = "a"
arr(1) = "b"
arr(2) = "c"
arr(3) = "d"
arr(4) = "e"

'要素数を増やす
ReDim preserve arr(6)
arr(5) = "f"
arr(6) = "g"

WScript.Echo arr(5)