和風スパゲティのレシピ

日本語でコーディングするExcelVBA

ブック・ファイル

選択セル値をブック名にブックを新規保存するマクロ

Wordの新規保存ダイアルログは先頭行のタイトルが保存ファイル名初期値になって開きます。この機能をExcelでも使えるよう、選択セルの値をブック名初期値として新規保存ダイアログを開くマクロを紹介します。

ファイルをバックアップするマクロ

現在作業中のブックを保存する際、上書き保存ではなく別名で保存しておきたい場面があります。ブック名_yyyymmddhhmm_作業メモという名称でファイルのバックアップを取るマクロを紹介します。

デスクトップのフォルダパスを取得する

デスクトップのフォルダパスを取得する方法を解説します。いくつか方法がありますが、環境変数を取得するEnviron関数を使用するのが簡単です。他にWScript.Shellオブジェクトを使用する方法もあります。

Killステートメントに*が渡ると一括削除が実行される

知らずに落ちると抜け出せなくなるVBAの落とし穴です。 Killステートメントを実行したら関係のないファイルも削除された ファイル名を半角に変換した際、Killステートメントが暴発する 環境依存文字を用いたファイルの削除が安定しない あたりにお悩みの方は…

ブックを開いたまま移動/名前を変更する

ブックを開いたまま移動したり、名前を変更する方法を解説します。これをストレートに実行する方法はありませんので、対象のブックを名前を付けて保存したあと元のブックを削除という手順で実行します。

新規ブックでのCtrl+Sを旧ダイアログに戻すマクロ

新規ブックや読取専用ブックでCtrl+Sを実行したときに出る名前を付けて保存ダイアログがフォルダパスをペーストできる場所がないものに改悪されたため、これを旧来のダイアログに戻すマクロを紹介します。

ファイルの拡張子を取得する - GetExtensionName

ファイル名から拡張子を取り出す方法を解説します。FileSystemObjectのGetExtensionNameメソッドを利用する方法と、InstrRev関数+Right/Mid関数を使用する方法の2種類があります。

開いているファイルをコピーする - FSO.CopyFile

現在開いているブックをコピーするには、FileSystemObjectのCopyFileを使用し、「FSO.CopyFile コピー元ファイルパス, コピー先ファイルパス」を実行します。この処理はFileCopyステートメントでは実行できません。

最近使ったアイテムを追加/削除する - RecentFilesプロパティ

最近使ったアイテムをVBAから編集したいときは、Application.RecentFilesプロパティを使用します。Addメソッドで追加を、Deleteメソッドで削除を実行できます。

破損したブックを修復して開く(CorruptLoad)

破損したブックを修復して開くには、Workbooks.OpenメソッドでCorruptload:=xlRepairFileを指定すればいいのですが、これは破損していないブックも修復済みにしてしまうため、まずは普通に開く→失敗したら修復という手順を踏む必要があります。

読取専用の推奨を無視して書込権限でブックを開く

ブックの読取専用推奨メッセージを無視して書き込み権限で開きたい場合は、Workbook.OpenメソッドのIgnoreReadOnlyRecommendedをTrueにすればOKです。DisplayAlerts=False、ReadOnly:=Falseではいずれも読取専用になるためご注意ください。

重複しないようファイル名に連番を付与する関数

ファイルを新規保存したりコピー・移動する際に、既存ファイルを上書きしないよう連番を付与するコードは関数化しておくと便利です。ファイルが存在しなくなるまでiを増やし、ファイルベース名 & (i) & 拡張子を結果値として返すことで実装できます。

フォルダを統合する(同名のフォルダに移動する)

同じ名前のフォルダがある場所にフォルダを移動すると、手作業であればフォルダを統合することができます。しかしVBAにはその機能がないため、フォルダ内の全ファイルを判定しながら移動していき、最後に元フォルダを削除する必要があります。

NameとFSO.MoveFolderの違い

ファイルを移動するNameステートメントとFileSystemObject.MoveFolderメソッドの違いを解説します。どちらも2つのパスを受け取ってファイルを移動します。MoveFolderのみワイルドカード*による一括移動ができる点が一番大きな違いです。

フォルダをコピーする - FSO.CopyFolder

中身ごとフォルダをコピーするFileSystemObject.CopyFolderメソッドの使い方を解説します。FSO.CopyFolder コピー元パス, コピー先パスという記述で実行できます。コピー元にはワイルドカード*が使用でき、複数のフォルダを一括でコピーできます。

フォルダを移動する - FSO.MoveFolder

中身ごとフォルダを移動するFileSystemObject.MoveFolderメソッドの使い方を解説します。FSO.MoveFolder 移動元パス, 移動先パスという記述で実行できます。移動元にはワイルドカード*が使用でき、複数のフォルダを一括で移動できます。

フォルダを別のドライブに移動する

フォルダを移動するName/FSO.MoveFolder」の両機能とも別ドライブ間の移動はできません。これを一発で行う機能は用意されていませんので、 まずはフォルダごとコピーし、そのあと元のフォルダを削除する手順で実行する必要があります。

フォルダを移動・名称変更する-Nameステートメント

フォルダを移動・名称変更する際に使用するNameステートメントの使い方を解説します。Name 対象フォルダパス, 行先フォルダパスという記述で実行でき、最後のフォルダ名を変えれば名称変更、途中のフォルダパスを変えれば移動ができます。

既存ファイルを上書きしてファイルを移動する

移動先にファイルがあった場合は上書きしてファイルを移動する方法を解説します。Name/FSO.MoveFileはどちらも上書きする機能を持っていませんので、Kill/FSO.DeleteFilleで削除してからName/FSO.MoveFileで移動する手順を踏む必要があります。

WithとNameステートメントは併用できない

WithステートメントでWorksheetを参照中に、Name .Cells(1, 1) As .Cells(2, 1)のような記述を実行しようとすると、構文エラーが発生します。原因は不明ですが、Nameの直後に「.」を打つことはできないようです。Name (.Cells(1, 1))とやれば解決します。

NameとFSO.MoveFileの違い

ファイルを移動するNameステートメントとFileSystemObject.MoveFileメソッドの違いを解説します。どちらも2つのパスを受け取ってファイルを移動します。MoveFileのみワイルドカード*による一括移動ができる点が一番大きな違いです。

FileSystemObject.MoveFileメソッド

FileSystemObjectにてファイルを移動するMoveFileメソッドについて解説します。FSO.MoveFile 移動元ファイルパス, 移動先ファイル/フォルダパスという記述で実行します。ファイルパスにワイルドカードを使用して一括移動することも可能です。

ファイルを移動・名称変更する-Nameステートメント

ファイルを移動したりファイル名を変更する際に使用する、Nameステートメントの使い方を解説します。Name 移動するファイルのパス, 移動先のファイルパスという記述で実行でき、フォルダ部分を変えれば移動、変えなければ名称変更ができます。

FileCopyとFSO.CopyFileの違い

ファイルをコピーする際に使用する、FileCopyステートメントとFileSystemObject.CopyFileメソッドの違いを解説します。FSO.CopyFileが完全上位互換と言ってよく、特に「ファイル名省略可」「ワイルドカードで一括コピー可」が大きな長所となります。

FileSystemObject.CopyFileメソッド

FileSystemObjectにてファイルをコピーするCopyFileメソッドについて解説します。コピー元と行先の二つのパスを渡して実行します。行先はファイル/フォルダどちらでも動きます。コピー元パスにワイルドカードを使用すれば一括コピーが可能です。

ファイルをコピーする - FileCopyステートメント

ファイルをコピーする際に使用する、FileCopyステートメントの使い方を解説します。FileCopy コピー元のファイルパス, コピー先のファイルパス という単純な記述で実行できます。既存のファイルは無警告で上書きされてしまう点に注意してください。

Folderオブジェクト(FileSystemObject)

FileSystemObjectの参照下で使用できるようになる、Folderオブジェクトの取得方法とプロパティ・メンバー一覧を記載します。

Fileオブジェクト(FileSystemObject)

FileSystemObjectの参照下で使用できるようになる、Fileオブジェクトの取得方法とプロパティ・メンバー一覧を記載します。

FileSystemObjectとは - Dir関数群との違い

ExcelVBAにおいてファイル・フォルダを便利に操作するためにFileSystemObjectという名前の拡張機能が用意されています。このFileSystemObjectを初めて使う方に向けて、どんな機能なのか、どんな時に使うのかをまずは簡単に説明していきます。

FileSystemObject入門-フォルダ取得と再帰処理

FileSystemObjectでフォルダ内のサブフォルダ一覧を取得する方法と、それを最下層まですべての階層のフォルダ取得するコードを解説します。フォルダを取得する関数内で自身をSubFoldersに対して呼出する、いわゆる再帰呼出によって実装します。