5-05.実用文例:ファイルのサイズを取得するには?

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

 

実行例

2022年9月13日

5-04.実用文例テキストファイルを読み込むには?

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

 

実行例

 

2022年9月13日

5-03.実用文例:テキストファイルに書き込むには?

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

 

実行例

 

2022年9月13日

5-02.実用文例:カレントフォルダーを調べるには?

CurDir関数

CurDir

カレントフォルダーとは、Excelが現在“注目”しているフォルダーのことです。「ファイルを開く」や「名前を付けて保存」などのダイアログボックスで最初に表示されるフォルダーがカレントフォルダーです。現在のカレントフォルダーを調べるには、CurDir関数を使います。

 右のサンプルでは、CurDir関数の結果から「左から1文字」をLeft関数で取り出し、カレントドライブも表示させています。


カレントフォルダーを表示する

Sub Sample()

MsgBox “カレントドライブ:” & Left(CurDir, 1) _

& vbCrLf & “カレントフォルダー:” & CurDir

End Sub

 

実行例

 

2022年9月13日

5-01.実用文例:フォルダーを削除するには?

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

 

実行例

 

2022年9月13日

4-07.ファイルの操作:フォルダーを作成するには?

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

 

実行例

 

2022年9月13日

4-06.ファイルの操作:ファイルの更新日時を調べるには?

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

 

実行例

 


 

 

4-05.ファイルの操作:ファイルの一覧を作成するには?

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

 

実行例

 

2022年9月13日

4-04.ファイルの操作:ファイルの存在を確認するには?

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

 

実行例

 

 

4-03.ファイルの操作:ファイルを削除するには?

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

 

実行例

 

2022年9月13日