Excel VBA FileSystemObject(3)フォルダの操作

Excel マクロ、VBA

スポンサーリンク

前回は、Excel VBAのFileSystemObjectでファイルのコピー・移動などする処理を扱った。今回はそれに続き、フォルダを操作する処理を取り扱う。

フォルダを操作する処理についても

  1. FileSystemObjectを全く使わない方法(お手軽)
  2. FileSystemObjectを使う方法(ワイルドカードなど、特別な処理を組み込める)
  3. FileSystemObject―Folderオブジェクトを使う方法(ワイルドカードなど使えないので、使わなくても良い)

とあるので、それぞれ記述方法を示していく。

フォルダを新規作成する

MkDir

Mkdir   (新規作成するフォルダのフルパス)
  • MkとはMakeのこと。
  • 既に存在するフォルダと同じパスのフォルダを作成しようとすると、エラーになる。

FileSystemObject.CreateFolder

  • 既に存在するフォルダと同じパスのフォルダを作成しようとすると、エラーになる。
  • このFileSystemObject.CreateFolderを単体で使ってフォルダ作成するだけでも良いが、結果(返り値)として、作成したフォルダのフルパスが文字列として返ってくる。
    下記ソースコードではそれを、文字列変数resultに代入している。

フォルダ名を変更する

Name

Name (元のフォルダのフルパス)  As  (変更後のフォルダのフルパス)

フォルダを移動する

さて、以下に、フォルダを移動する操作について書いていくが、どうもVBAでフォルダを移動するに当たっては不便な点がある模様。

CドライブからDドライブなどと、異なるドライブへフォルダを移動しようとすると、「書き込みできません。」といったエラーが出てしまう。

調べてもみたが、今ひとつ解決方法が見付からなかった。

ひとまずVBAでのフォルダ移動は、同じドライブの間だけでやるものと覚えておこう。

FileSystemObject.MoveFolder

FSO.MoveFolder (元のフォルダのフルパス)  (変更後のフォルダのフルパス)
  • ワイルドカードを使って、「○という文字を含む」条件を指定して、それに合致するフォルダを全て移動するという処理もできる。

Folder.Move

Folder.Move (変更後のフォルダのパス)
  • ワイルドカードとか使えないし、特にこちらの記述を使う必要はないだろう。

フォルダをコピーする

  • 何故かフォルダのコピーは、フォルダの移動と違って、別のドライブへコピーすることもできる。移動処理は、PCの中で使う領域をモロ変更するから駄目ということなのだろう。

FileSystemObject.CopyFolder

FSO.CopyFolder (元のフォルダのフルパス)  (変更後のフォルダのフルパス)
  • ワイルドカードを使って、「○という文字を含む」条件を指定して、それに合致するフォルダを全てコピーするという処理もできる。
  • フォルダ内のファイルもコピーされる。
  • 最後の引数にoverwritefilesというのを指定して、同名ファイルがあったら上書きするかどうかも指定できる。
    これは通常は省略してよいだろう。省略した場合はTrue扱いで、上書きされることになる。

Folder.Copy

  • ワイルドカードとか使えないし、特にこちらの記述を使う必要はないだろう。
  • 最後の引数にoverwritefilesというのを指定して、同名ファイルがあったら上書きするかどうかも指定できる。
    これは通常は省略してよいだろう。省略した場合はTrue扱いで、上書きされることになる。

フォルダを削除する

RmDir

  • RmはRemove(削除)のこと。
  • RmDirは、ファイル・フォルダが入っていない空のフォルダを削除するコマンド。ファイルがなくとも、フォルダが中に入っているだけでもエラーになる。

FileSystemObject.DeleteFolder

FSO.DeleteFolder  (削除するフォルダのフルパス)
  • 最後の引数Forceを、省略せずTrueを明示指定した方が良いかもしれない。そうすれば読み取り専用ファイルも削除されるようになる。
  • 処理の順序として、まずフォルダ内の全てのファイルを削除してから、次にフォルダを削除しようとする。

Folder.Delete

  • 上記のFileSystemObject.DeleteFolderとだいたい同じ。

スポンサーリンク