ブック・ファイル
FileSystemObjectにてファイルを移動するMoveFileメソッドについて解説します。FSO.MoveFile 移動元ファイルパス, 移動先ファイル/フォルダパスという記述で実行します。ファイルパスにワイルドカードを使用して一括移動することも可能です。
ファイルを移動したりファイル名を変更する際に使用する、Nameステートメントの使い方を解説します。Name 移動するファイルのパス, 移動先のファイルパスという記述で実行でき、フォルダ部分を変えれば移動、変えなければ名称変更ができます。
ファイルをコピーする際に使用する、FileCopyステートメントとFileSystemObject.CopyFileメソッドの違いを解説します。FSO.CopyFileが完全上位互換と言ってよく、特に「ファイル名省略可」「ワイルドカードで一括コピー可」が大きな長所となります。
FileSystemObjectにてファイルをコピーするCopyFileメソッドについて解説します。コピー元と行先の二つのパスを渡して実行します。行先はファイル/フォルダどちらでも動きます。コピー元パスにワイルドカードを使用すれば一括コピーが可能です。
ファイルをコピーする際に使用する、FileCopyステートメントの使い方を解説します。FileCopy コピー元のファイルパス, コピー先のファイルパス という単純な記述で実行できます。既存のファイルは無警告で上書きされてしまう点に注意してください。
FileSystemObjectの参照下で使用できるようになる、Folderオブジェクトの取得方法とプロパティ・メンバー一覧を記載します。
FileSystemObjectの参照下で使用できるようになる、Fileオブジェクトの取得方法とプロパティ・メンバー一覧を記載します。
ExcelVBAにおいてファイル・フォルダを便利に操作するためにFileSystemObjectという名前の拡張機能が用意されています。このFileSystemObjectを初めて使う方に向けて、どんな機能なのか、どんな時に使うのかをまずは簡単に説明していきます。
FileSystemObjectでフォルダ内のサブフォルダ一覧を取得する方法と、それを最下層まですべての階層のフォルダ取得するコードを解説します。フォルダを取得する関数内で自身をSubFoldersに対して呼出する、いわゆる再帰呼出によって実装します。
FileSystemObjectでフォルダ内のファイル一覧を取得する方法について解説します。FSOはファイル・フォルダをオブジェクトとして扱えるのが特長で、フォルダ内のFileオブジェクトは「Folderオブジェクト.Files」で取得でき、これにForEach文が使えます。
Dir関数を使ってサブフォルダの一覧を取得する方法を解説します。これは非推奨な方法で、FileSystemObjectを使った方が簡単なことに注意してください。Dirの場合は相対パスとファイルも検索されてしまい、これをはじくコードが必要になります。
空のフォルダを一括で削除する方法を解説します。親フォルダのSubFoldersをForEachでループし、FilesとSubFoldersのCOuntが共に0である子フォルダをDeleteすることで実行できます。下層フォルダまで検索する場合は、再帰呼出を追加します。
フォルダが空かどうか判定する方法を解説します。フォルダの中にファイルがなく、かつフォルダの中にフォルダない場合に空のフォルダと判定します。Folderオブジェクトに対して、.Files.Count = 0と.SubFolders.Count = 0を判定すればOKです。
フォルダを削除する際に使用する、RmDirとFileSystemObject.DeleteFolderの違いを解説します。実はこの二つはほとんど違うもの、RmDirは空のフォルダを削除するステートメントですが、DeleteFolderは中身ごとフォルダを削除するメソッドです。
中のファイル・フォルダごとフォルダを削除する場合はFileSystemObject.DeleteFolderメソッドを使い、FSO.DeleteFolder 削除フォルダパス というコードを実行します。これは空フォルダしか削除できないRmDirで行えないため、FSO必須の処理になります。
空のフォルダを削除する、RmDirステートメントの使い方を解説します。RmDir 削除フォルダパス で実行でき、フォルダが空でない場合はエラーとなります。中身ごとフォルダを削除したい場合はFileSystemObjectのDeleteFolderメソッドを使用します。
ファイルを削除する際に使用する、KillステートメントとFileSystemObject.DeleteFileメソッドの違いを解説します。両者はほとんど同じ仕様で、引数(削除するファイルのパス)、使えるワイルドカード、エラーが発生する条件などの挙動もほぼ同じです。
FileSystemObjectにてファイルを削除する、DeleteFileメソッドの使い方を解説します。FSO.DeleteFile 削除したいファイルのパス で実行できます。Killステートメントと同様、ワイルドカード*を利用して、該当ファイルの一括削除を行うこともできます。
ファイルを削除する際に使用するKillステートメントの使い方を解説します。Kill 削除したいファイルのパス で実行でき、Excel以外の全種類のファイルも削除できます。また、ワイルドカード*を使用して、該当ファイルの一括削除も可能です。
ファイル・フォルダ操作の便利ツール「FileSystemObject」を使うための事前準備として行う、「Microsoft Scripting Runtime の参照設定」と、「FileSystemObjectのオブジェクト変数のSet」の2つの設定について、やり方を解説していきます。
FileSystemObjectはとても便利なのですが、CreateObjectやNewを使った参照・宣言部分が面倒です。これを簡単に行う方法として、Public FSO As New FileSystemObjectとPublic変数でNewまで済まし、全プロシージャで使いまわす方法があります。
フォルダを部分一致で検索する方法を解説します。フォルダの検索にはFileSystemObjectを使うのがおすすめです。Dir関数はワイルドカードが使えますが、引数にvbDirectoryを指定してもファイルまで一緒に検索するためコードが煩雑になります。
ファイル名を部分一致検索する方法を解説します。単純な部分一致であればDir関数にワイルドカード(*?)を指定することで実行できます。文字数や文字種を絞った部分一致まで行いたい場合は、候補のファイルすべてをLike演算子で比較します。
フォルダが存在するか判定する、Dir関数(vbDirectory)と、FileSystemObject.FolderExistsメソッドの違いを解説します。一番の違いは返り値で、True/Falseを返すFolderExistsに対し、フォルダ名を返すDir関数は="",<>""で判定する必要があります。
ファイルが存在するか判定する、Dir関数とFileSystemObject.FileExistsメソッドの違いを解説します。まずは返り値が異なり、Dir関数は=""<>""での判定が必要になります。また、Dir関数はワイルドカード*を使用した部分一致検索が可能です。
FileSystemObjectにてファイルの存在を判定する、FileExistsメソッドについて解説します。If FSO.FileExists(判定したいファイルのパス) Thenが基本形です。返り値もBooleanとわかりやすい仕様ですが、Dir関数と違ってワイルドカードは使えません。
ファイル・フォルダを扱うFileSystemObjectについて、何が便利で、何のために使うオブジェクトなのかを解説します。FSOとはファイル管理の便利ツール集であり、「フォルダやファイルをオブジェクトとして扱うことができる」ことが特長です。
FileSystemObjectにてフォルダの存在を判定する、FolderExistsメソッドについて解説します。If FSO.FolderExists(判定したいフォルダのパス) Thenが基本形です。引数もフォルダパスひとつで、返り値もBooleanと、仕様がわかりやすいメソッドです。
MkDirステートメントやFileSystemObjectのCreateFolderメソッドは、作りたいフォルダの親フォルダがないとエラーになります。この対策は[\]でSplitしてからのForEach文がストレートですが、再帰関数を使用した方法もあるため紹介します。
FileSystemObjectにてフォルダを作成する、CreateFolderメソッドについて解説します。作りたいフォルダのパスを渡すとそのフォルダを作成してるメソッドで、通常実行する分には、MkDirステートメントとエラー含めてほとんど同じ動きをします。