はじめに
ひらちんです。
VBAからファイルを扱う方法をまとめます(^o^)
ファイルの存在を確認する
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関数の引数に指定したファイルが存在すると「パスを含まないファイル名」を返してくれます。
ということで、存在するファイルのファイルパスを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
サンプルでは、存在するファイルかどうか調べてからファイル名を取得するようにしています。
パスだけを抜き出す
反対に、ファイル名を含まないパスだけを抜き出すのも簡単です。
指定した存在するファイルパス(フル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には、元のファイルを、dextinationにはコピー先の場所をファイル名も含めたフルパスで指定します。
※コピー先のファイル名にパスを含めないと、カレントディレクトリとして処理されます。
サンプル
Sub sample()
Dim コピー元のファイル As String
コピー元のファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
Dim コピー先のファイル As String
コピー先のファイル = "C:\ひらちんの部屋\コピー先のフォルダ\コピーファイル.xlsm"
If Dir(コピー元のファイル) <> "" Then
FileCopy コピー元のファイル, コピー先のファイル
End If
End Sub
ファイル名を変更する・移動する
ファイル名を変更するには、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関数を使います。
単位はバイト(Byte)です。
既に開いているファイルを指定すると、開く前のファイルサイズが返ります。
サンプル
Sub sample()
Dim ファイル As String
ファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
Debug.Print FileLen(ファイル) & "バイト"
End Sub
ファイルのタイムスタンプを取得する
ファイルの更新日時を取得するには、FileDateTime関数を使います。
サンプル
Sub sample()
Dim ファイル As String
ファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA.xlsm"
Debug.Print FileDateTime(ファイル)
End Sub
ファイルを削除する
ファイルを削除するには、Killステートメントを使います。
※Killステートメントで削除したファイルはゴミ箱にはいらないので復活出来ません
サンプル
Sub sample()
Dim ファイル As String
ファイル = "C:\ひらちんの部屋\ひらちんの部屋_VBA_削除する.xlsm"
Kill ファイル
End Sub
コメント