FileLen関数
FileLen(パス)
ファイルのサイズを取得するには、FileLen関数を使います。引数に取得したいファイルのパスを指定します。FileLen関数が返す数値の単位はバイトです。
なお、指定したファイルが既に開かれている場合、FileLen関数はファイルが開かれる前のサイズを返します。Format関数を使って数値を3桁区切りにしています。
サンプル●Sample1.xlsxのファイルサイズを表示する
Sub Sample()
Const TargetFile As String = “C:¥JAM¥Sample1.xlsx”
MsgBox “ファイルサイズは” & vbCrLf & _
Format(FileLen(TargetFile), “#,##0″) & ” Byteです。”
End Sub
実行例


Openステートメント、Line Inputステートメント
Open ファイル名 For Input As #ファイル番号
Line Input #ファイル番号, 変数名
テキストファイルからデータを読み込むには、Openステートメントでテキストファイルを開き、Line Inputステートメントを使います。Line Inputステートメントは、読み込んだデータを、指定した変数に格納します。
Line Inputを実行すると、読み込みポイントが1行ずつ下がり、ファイルの終端(End Of File)で、EOF関数がTrueを返します。そこで、EOF関数がTrueになるまで読み込みを繰り返せば、すべての行を読み込めます。下のサンプルでは、 Do UntilEOF(1)として、終端に到達するまでループを繰り返します。EOF関数の引数には、開いたファイルの番号を指定します。 ここでは、変数rで行番号を増やして順番にデータを入力。終了後、Closeステートメントでファイルを閉じます。
Sample1.txtから1行ずつデータを読み込み、セルに入力する
Sub Sample()
Dim buf As String, r As Long
Open “C:\JAM\Sample1.txt” For Input As #1
Do Until EOF(1)
Line Input #1, buf
r = r + 1
Cells(r, 1) = buf
Loop
Close #1
End Sub
実行例


Openステートメント、Printステートメント
Open ファイル名 For Output As #ファイル番号
Print #ファイル番号, 書き込む文字列
テキストファイルに文字列を書き込むには、Openステートメントでファイルを開き、Printステートメントを使います。
Openステートメントには、ファイル名をフルパスで指定します。 For Outputとすることで、出力モードで開きます。ファイルが存在しない場合は新規に作成します。既存のファイルを開く場合、中身のデータは消えて上書きされるので注意しましょう。既存のファイルに追記したい場合は、OutputではなくAppendを指定します。ファイル番号は、開いたファイルを管理するためのものです。Printステートメントには、このファイル番号と、書き込む文字列を指定します。するとファイルには、指定した文字列と、改行コードが書き込まれます。書き込んだ後は、Closeステートメントで閉じます。
A1 ~ A6セルのデータをSample1.txtに書き込む
Sub Sample1()
Dim i As Long
Open “C:¥JAM¥Sample1.txt” For Output As #1
For i = 1 To 6
Print #1, Cells(i, 1)
Next i
Close #1
End Sub
実行例


CurDir関数
CurDir
カレントフォルダーとは、Excelが現在“注目”しているフォルダーのことです。「ファイルを開く」や「名前を付けて保存」などのダイアログボックスで最初に表示されるフォルダーがカレントフォルダーです。現在のカレントフォルダーを調べるには、CurDir関数を使います。
右のサンプルでは、CurDir関数の結果から「左から1文字」をLeft関数で取り出し、カレントドライブも表示させています。
カレントフォルダーを表示する
Sub Sample()
MsgBox “カレントドライブ:” & Left(CurDir, 1) _
& vbCrLf & “カレントフォルダー:” & CurDir
End Sub
実行例


RmDirステートメント
RmDir パス
すでに存在しているフォルダーを削除するには、RmDirステートメントを使います。「RmDir」は「Remove Directory」の略です。存在しないフォルダーを削除しようとするとエラーになります。
下のサンプルでは、指定したフォルダーが存在するかどうかを確認した上で、フォルダーを削除しています。存在の確認方法については、左と同様です。
なお、RmDirステートメントでフォルダーを削除するとき、削除対象のフォルダー内にファイルやサブフォルダーが存在するとエラーになります。フォルダーは空の状態でなければなりません。
JAMフォルダー内のMOMO2022フォルダーを削除
Sub Sample()
If Dir(“C:¥JAM¥MOMO2022”, vbDirectory) <> “” Then
RmDir “C:¥JAM¥MOMO2022”
Else
MsgBox “フォルダーがありません。”
End If
End Sub
実行例


MkDirステートメント
MkDir パス
新しいフォルダーを作成するには、MkDirステートメントを使います。「MkDir」は「Make Directory」の略です。現在のWindowsではフォルダーと呼びますが、MS-DOS時代はディレクトリーと呼んでいたことの名残です。引数には、作成するフォルダーのパスを指定します。
すでに存在しているフォルダーを作成しようとするとエラーになります。あらかじめ同名のフォルダーがないかどうかを確認した上で、フォルダーを作成しています。
2番目の引数にvbDirectoryと指定することで、フォルダーのみを対象にすることができます。
CドライブのJAMフォルダーにMOMO2022というフォルダーを作成
Sub Sample()
If Dir(“C:¥JAM¥MOMO2022”, vbDirectory) = “” Then
MkDir “C:¥JAM¥MOMO2022”
End If
End Sub
実行例


FileDateTime関数
FileDateTime(パス)
ファイルの最終更新日時(作成日時または最後に修正した日時)を取得するには、FileDateTime関数を使います。引数には、取得したいファイルのパスを指定します。返される日時はDate型となります。
日付だけ、あるいは時刻だけを取得したいときなどは、Format関数などで加工して利用しましょう。
Sample1:Sample1.xlsxの更新日時を表示
Sub Sample1()
Const TargetFile As String = “C:¥JAM¥Sample1.xlsx”
MsgBox FileDateTime(TargetFile)
End Sub
実行例


Sample2:Sample.xlsxの更新日を「○月○日」と表示
Sub Sample2()
Const TargetFile As String = “C:¥JAM¥Sample1.xlsx”
MsgBox Format(FileDateTime(TargetFile), “m””月””d””日”””)
End Sub
実行例


Dir関数
Dir()
あるフォルダーに存在するすべてのファイル名を取得するには、Dir関数にワイルドカード(*)を指定します。
下のサンプルコードは、CドライブにあるJAMフォルダー内のすべてのテキストファイル(*.txt)の名前をアクティブシートに書き出します。Dir関数にワイルドカードを指定すると、まずそのワイルドカードに一致するファイル名が返ります。次に、Dir関数の引数を省略してDir()を実行すると、同じワイルドカードを指定したものと見なして検索を実行し、次に一致するファイル名が返ります。そして、一致するすべてのファイル名が返ると、Dir関数は空文字(””)を返します。
そこで、Dir関数が空文字を返すまでループを繰り返せば、該当するすべてのファイル名を取得できます。
CドライブのJAMフォルダーにあるファイル一覧を作成
Sub Sample()
Dim buf As String, r As Long
buf = Dir(“C:¥JAM¥*.txt”)
Do While buf <> “”
r = r + 1
Cells(r, 1) = buf
buf = Dir()
Loop
End Sub
実行例


Dir関数
Dir(パス)
ファイルの存在を確認するには、Dir関数を使います。「Dir」は「Directory」の略です。引数には、探すファイルのフルパスを指定します。そのファイルが存在した場合、Dir関数は、パスを含まないファイル名だけを返します。ファイルが存在しないと、Dir関数は空文字(””)を返します。
CドライブのJAMフォルダーにSample1.xlsxがあるかどうかを調べる
Sub Sample()
If Dir(“C:¥JAM¥Sample1.xlsx”) = “” Then
MsgBox “存在しません。”
Else
MsgBox “存在します。”
End If
End Sub
実行例


Killステートメント
Kill(パス)
ファイルを削除するには、Killステートメントを使います。Killステートメントを利用すると、事前の確認ダイアログなどは表示せずに、即座にファイルが削除されます。また、削除したファイルは「ごみ箱」には移動せず、完全に削除されてしまうので注意が必要です。ごみ箱から復活させることはできません。
Killステートメントは、指定したファイルが存在しないとエラーになります。そのため、あらかじめDir関数(右ページ左上)を使ってファイルの存在を確かめておくとよいでしょう。
CドライブのJAMフォルダーにあるtest1.txtを完全に削除する
Sub Sample()
Const TargetFile As String = “C:¥JAM¥test1.txt”
If Dir(TargetFile) <> “” Then
Kill TargetFile
MsgBox TargetFile & “を削除しました。”
Else
MsgBox “ファイルがありません。”
End If
End Sub
実行例

