目次
目的
- パソコン内にフォルダを作成する。削除する。
- ファイルを削除する。
VBA で同様の操作を行う場合、FSO(File System Object ファイルシステムオブジェクト)も便利だと思います。「VBA FSO」などのキーワードで検索すると目的の情報を得られると思います。
フォルダ作成
- デスクトップにフォルダを作成してみます。
Sub mkdirステートメント()
MkDir "C:¥Users¥xxx¥デスクトップ¥folder1"
End Sub
フォルダ削除
- 上記で作成したフォルダを削除してみます。
Sub RmDirステートメント()
RmDir "C:¥Users¥xxx¥デスクトップ¥folder1"
End Sub
ファイルが入っているフォルダを削除
ファイルが入っているフォルダを RmDir で削除しようとしてみます。
- まずは削除対象のフォルダ、ファイルを作成します。
Sub フォルダ作成後txtファイル3個作成()
'フォルダ作成
MkDir "C:¥Users¥xxx¥デスクトップ¥folder1"
'txt ファイル 3 個作成
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥file1.txt" For Output As #1
Close #1
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥file2.txt" For Output As #2
Close #2
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥file3.txt" For Output As #3
Close #3 'Reset で一括で閉じる事も可能なようです。
End Sub- 実行結果は以下のようになりました。
「folder1」の中に「file1.txt」「file2.txt」「file3.txt」が作成されている。 - Open
- パソコン内部でファイルを開く事ができます。パソコン内部で開かれるので画面に表示されません。
- 「Open "ファイルパス" For ファイルを開くモード As #ファイル番号」の書式になっています。
- ファイルの拡張子は txt に限らず html , log などのファイルも作成できます。
- ファイルを開くモードの一覧は下記 URL に記載がありました。
- FileAttr 関数 (Visual Basic for Applications) | Microsoft Learn
- https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/fileattr-function
- 「Output」は上書きモードで開く指定のようです。「Append」だと追記モードになります。「Input」は読み取りモードになるようです。
- 複数のファイルを開いた時に重複しないように空いているファイル番号を指定して Open するようです。
- 空いていファイル番号は FreeFile 関数で取得可能なようです。
- Close
Open で開いたファイルを閉じる事ができます。「Close #ファイル番号」の書式になっています。
- 実行結果は以下のようになりました。
- RmDir で削除しようとしてみます。
Sub エラー_ファイルが入っている状態でフォルダ削除()
RmDir "C:¥Users¥xxx¥デスクトップ¥folder1"
End Sub - フォルダの中のファイルを削除してみます。
Sub ファイル削除()
Kill "C:¥Users¥xxx¥デスクトップ¥folder1¥file1.txt"
Kill "C:¥Users¥xxx¥デスクトップ¥folder1¥file2.txt"
Kill "C:¥Users¥xxx¥デスクトップ¥folder1¥file3.txt"
End Sub - ファイルの削除が完了したので、再度、フォルダの削除を試みます。
Sub RmDirステートメント()
RmDir "C:¥Users¥xxx¥デスクトップ¥folder1"
End Sub
マクロストック
Sub Open後_FileAttr関数のテスト()
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥file1.txt" For Output As #1
Debug.Print fileattr(1, 1)
Close #1
End Sub
- 実行結果は以下のようになりました。
2 = Output(シーケンシャル出力モード )で開いている。 - #1
ファイル番号です。 - fileattr
- 「Open "ファイルパス" For ファイルを開くモード As #ファイル番号」の書式でファイルを開いていますが、この時の「ファイルを開くモード」を取得できます。上記では「Output」モードでファイルを開いているので「Output」の定数「2」が取得できました。
- 「fileattr( ファイル番号 , 戻り値のタイプ )」の書式になっています。第二引数の「戻り値のタイプ」に「1」を指定すると、Open で開いた時のファイルモードが返ってくるようです。
Sub Openしないで_FileAttr関数のテスト()
Debug.Print fileattr(1, 1)
End Sub

Sub resetステートメントのテスト()
Debug.Print "次のファイル番号="; FreeFile
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥1.txt" For Output As #1
Debug.Print "次のファイル番号="; FreeFile
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥2.txt" For Output As #2
Debug.Print "次のファイル番号="; FreeFile
Open "C:¥Users¥xxx¥デスクトップ¥folder1¥3.txt" For Output As #3
Debug.Print "次のファイル番号="; FreeFile
Reset 'ファイルを閉じる
Debug.Print "リセット後のファイル番号="; FreeFile
End Sub

テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。