【EXCEL VBA | ファイル操作】VBAでファイルを扱う

スポンサーリンク

スポンサーリンク


ひらちんです。

VBAからファイルを扱う方法をまとめます(^o^)

ファイルの存在を確認する

Dir(pathname)

Dir関数の引数に指定したファイルが存在すると「パスを含まないファイル名」を返してくれます。

存在しない場合は「""」を返します。

サンプル

Sub sample()


    Dim 存在するファイル As String
    存在するファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
    
    If Dir(存在するファイル) <> "" Then
        Debug.Print "ファイルあります!"
    Else
        Debug.Print "ファイルありません!"
    End If
    
    
    Dim 存在しないファイル As String
    存在しないファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA_ttt.xlsm"
    
    If Dir(存在しないファイル) <> "" Then
        Debug.Print "ファイルあります!"
    Else
        Debug.Print "ファイルありません!"
    End If
    

End Sub

ファイル名を抜き出す

Dir(pathname)

Dir関数の引数に指定したファイルが存在すると「パスを含まないファイル名」を返してくれます。

ということで、存在するファイルのファイルパスをDir関数の引数に指定すれば、ファイル名を取得することが出来ます。

サンプル

Sub sample()

    Dim 存在するファイル As String
    存在するファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"

    Dim fileneme as string
    If Dir(存在するファイル) <> "" Then
        fileneme = Dir(存在するファイル)
    End If
    
    Debug.Print fileneme

End Sub

サンプルでは、存在するファイルかどうか調べてからファイル名を取得するようにしています。

パスだけを抜き出す

Dir(pathname)

Replace(expression, find, replace)

反対に、ファイル名を含まないパスだけを抜き出すのも簡単です。

指定した存在するファイルパス(フルPath)から、先程Dir関数で抜き出したファイル名を、Replace関数で取り除いてあげればいいだけですね(^o^)

Replace(存在するファイル, Dir(存在するファイル), "")

サンプル

Sub sample()

    Dim 存在するファイル As String
    存在するファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"

    Dim パス As String
    If Dir(存在するファイル) <> "" Then
        パス = Replace(存在するファイル, Dir(存在するファイル), "")
    End If
    
    Debug.Print パス

End Sub

ファイルをコピーする

FileCopy source, destination

ファイルをコピーするには、FileCopyステートメントを使用します。

引数のsourceには、元のファイルを、dextinationにはコピー先の場所をファイル名も含めたフルパスで指定します。

※コピー先のファイル名にパスを含めないと、カレントディレクトリとして処理されます。

サンプル

Sub sample()

    Dim コピー元のファイル As String
    コピー元のファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
    
    Dim コピー先のファイル As String
    コピー先のファイル = "C:\ひらちんの部屋\コピー先のフォルダ\コピーファイル.xlsm"

    If Dir(コピー元のファイル) <> "" Then
    
        FileCopy コピー元のファイル, コピー先のファイル
        
    End If
    
End Sub

ファイル名を変更する・移動する

Name oldpathname As newpathname

ファイル名を変更するには、Nameステートメントを使います。

引数の指定は、oldpathnaame が元のファイル名newpathname が新しい名前になります。

newpathname のパス指定は変更出来るので、名前を変えて移動させるということも可能です。

サンプル

Sub sample()

    Dim 元のファイル As String
    元のファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
    
    Dim 移動先のファイル As String
    移動先のファイル = "C:\ひらちんの部屋\移動先のフォルダ\移動したファイル.xlsm"

    If Dir(元のファイル) <> "" Then
    
        Name 元のファイル As 移動先のファイル
        
    End If
    
End Sub

ファイルサイズを取得する

FileLen(pathname)

ファイルのサイズを取得するには、FileLen関数を使います。

単位はバイト(Byte)です。

既に開いているファイルを指定すると、開く前のファイルサイズが返ります。

サンプル

Sub sample()

    Dim ファイル As String
    ファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
    
    Debug.Print FileLen(ファイル) & "バイト"

End Sub

ファイルのタイムスタンプを取得する

FileDateTime(pathname)

ファイルの更新日時を取得するには、FileDateTime関数を使います。

サンプル

Sub sample()

    Dim ファイル As String
    ファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
    
    Debug.Print FileDateTime(ファイル)

End Sub

ファイルを削除する

Kill pathname

ファイルを削除するには、Killステートメントを使います。

※Killステートメントで削除したファイルはゴミ箱にはいらないので復活出来ません

サンプル

Sub sample()

    Dim ファイル As String
    ファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA_削除する.xlsm"
    
    Kill ファイル

End Sub

フォルダの操作の記事はこちら


スポンサーリンク

スポンサーリンク

スポンサーリンク


シェアする

フォローする


スポンサーリンク