基本構文
中のファイル・フォルダごとフォルダを削除する場合はFileSystemObject.DeleteFolderメソッドを使い、FSO.DeleteFolder 削除フォルダパス というコードを実行します。これは空フォルダしか削除できないRmDirで行えないため、FSO必須の処理になります。
FileSystemObjectにてファイルを削除する、DeleteFileメソッドの使い方を解説します。FSO.DeleteFile 削除したいファイルのパス で実行できます。Killステートメントと同様、ワイルドカード*を利用して、該当ファイルの一括削除を行うこともできます。
ファイルを削除する際に使用するKillステートメントの使い方を解説します。Kill 削除したいファイルのパス で実行でき、Excel以外の全種類のファイルも削除できます。また、ワイルドカード*を使用して、該当ファイルの一括削除も可能です。
ファイル・フォルダ操作の便利ツール「FileSystemObject」を使うための事前準備として行う、「Microsoft Scripting Runtime の参照設定」と、「FileSystemObjectのオブジェクト変数のSet」の2つの設定について、やり方を解説していきます。
セルの書式設定の配置タブにある、水平/垂直位置や、文字の折り返し、縮小して全体表示、縦書きなどの文字方向設定をVBAで行う方法を解説します。例えば水平方向を中央寄せにするには、Range.HorizontalAlignment = xlCenterを実行します。
マクロが中断しないようExcelからの確認メッセージを非表示にする、DisplayAlertsプロパティの使い方を解説します。Application.DisplayAlerts=Falseを実行すると以降確認メッセージが表示されなくなり、Trueにすると再度表示されるようになります。
文字列を部分一致で比較するLike演算子の使い方を解説します。任意の文字列を意味するワイルドカード「*」を利用して、If 判定したい文字列 Like "*○○*" Thenの形式で使用します。数字を表す#や、アルファベットを表す[A-Z]など、文字種も指定可能です。
FileSystemObjectにてファイルの存在を判定する、FileExistsメソッドについて解説します。If FSO.FileExists(判定したいファイルのパス) Thenが基本形です。返り値もBooleanとわかりやすい仕様ですが、Dir関数と違ってワイルドカードは使えません。
ファイル・フォルダを扱うFileSystemObjectについて、何が便利で、何のために使うオブジェクトなのかを解説します。FSOとはファイル管理の便利ツール集であり、「フォルダやファイルをオブジェクトとして扱うことができる」ことが特長です。
FileSystemObjectにてフォルダの存在を判定する、FolderExistsメソッドについて解説します。If FSO.FolderExists(判定したいフォルダのパス) Thenが基本形です。引数もフォルダパスひとつで、返り値もBooleanと、仕様がわかりやすいメソッドです。
FileSystemObjectにてフォルダを作成する、CreateFolderメソッドについて解説します。作りたいフォルダのパスを渡すとそのフォルダを作成してるメソッドで、通常実行する分には、MkDirステートメントとエラー含めてほとんど同じ動きをします。
VBAでセル/セル範囲を指定するRange,Cellsの基本的な使い方を解説します。A1など固定されたセルである場合はRange、変数を使ったループ処理を書きたい場合はCells、変数でセル範囲を指定したい場合はRange(Cells,Cells)と使い分けましょう。
文字列を区切り文字付きで結合するJoin関数の使い方を解説します。Join(1次元配列, 区切り文字)で配列の各要素をつなげた1つの文字列を作ってくれます。この関数は1次元配列限定のため、セル範囲を渡したい場合はTranspose関数をかませます。
フォルダを作成する場合は、MkDirステートメントを使用します。引数が「作るパス」しかない単純なステートメントですが、すでにあるフォルダを作ろうとするとエラーになる点と、すでにあるフォルダ内にしか作れない点にご注意ください。
ブックを上書き保存する場合は、 WorkbookオブジェクトのSaveメソッドを使います。読取専用か調べるReadOnlyプロパティ、保存ブックをシートから取得するParentプロパティ、保存して閉じるCloseメソッドも一緒に覚えるとよいでしょう。
ブックを閉じるときは、Workbook.Closeメソッドを使用します。引数SaveChangesがTrueの場合は上書き保存をして閉じ、Flaseの場合は保存をせずに閉じます。この引数を省略した場合は、保存するかをユーザーに確認してから閉じます。
セルのロックの設定/解除の方法と、セルがロックされているかを判定する方法を解説します。どちらもRangeオブジェクトのLockedプロパティで行うことができ、設定/解除はTrue/Falseの代入で、判定はTrue/Falseとの比較で実行します。
ブックの保護を設定/解除する方法を解説します。WorkbookオブジェクトのProtectメソッドを使います。ブックの保護という名称ですが、実際に禁止される操作は、ワークシートの追加、表示/非表示、削除、移動、名前変更になります。
ワークシートの保護を設定/解除する方法を解説します。シートを保護するにはWorksheetのProtectメソッドを使用します。簡単ですが非常に引数が多いメソッドですので、よく扱う方は全引数を設定するコードを保存しておきましょう。
ExcelVBAにおいて、最終列を取得する方法を紹介します。シート/指定行/セル範囲(Range)/CurrentRegion/AutoFilterの最終列を取得するコードをします。仕組みは最終行を取得するときと変わりませんので、ソースコードのみ記載しました。
ブック内のすべてのシートをループして、複数のシートに同じ処理を実行するコードを紹介します。たくさんのシートに同じ処理を行うのは、マクロならではの便利な技です。いくつかパターンを用意しましたので、お好きなコードをお持ち帰りください。
ワークシートの名前を取得したり、変更する場合は、WorksheetオブジェクトのNameプロパティを使用します。シート名 = Worksheet(1).Nameというコードで名称を取得でき、Worksheet(1).Name = "変更シート名"というコードで名称を変更できます。
ワークシートを削除するDeleteメソッドの使い方を解説します。シートを削除する場合は、[削除するシート].Deleteを実行します。削除時の警告メッセージを表示せずにシートを削除する場合はApplication.DisplayAlerts = False/Trueでこのコードを挟みます。
「ワークシートの指定方法」はいろいろなやり方があり、どれがいいというわけではなく一長一短があります。このいろいろなワークシートの指定方法を、「基本的だけど効果の高い方法」に厳選して解説していきますので、是非習得していってください。
ワークシートを移動する「Moveメソッド」の使い方を解説します。[移動するシート].Move Before:=[ここで指定したシートの1つ前に挿入]、または[移動するシート].Move After:=[ここで指定したシートの1つ後ろに挿入]というコードを実行します。
ワークシートをコピーする「Copyメソッド」の使い方を解説します。[コピーするシート].Copy Before:=[ここで指定したシートの1つ前に挿入]、または[コピーするシート].Copy After:=[ここで指定したシートの1つ後ろに挿入]というコードを実行します。
Sub、Functionなどを作成するとき、任意の数の引数を渡す方法を解説します。ParamArray 引数名() という引数を作ると、呼び出す側では複数の引数として渡すことができ、プロシージャ内で実際に使うときは、配列として扱うことができます。
Sub、Functionなどの引数を省略可能にするOptionalの使い方を解説します。「引数名 As データ型」という普段の宣言部分に、先頭にOptionalをつけると、その引数は省略可能になり、後ろに「= ○○」をつけると省略時の値を設定することができます
処理ごとの解説ではなく、完成品の全体が見たい!という方のための、完成品マクロのサンプルコードです。今回のテーマは「データシート⇒帳票を出力」です。初級者の方にも扱えるよう、この処理を動かすための最低限の書き方をしております。
Excelのデータ処理をマクロで自動化しようと思ったら、必ずついて回るのが「最終行の自動取得」です。データの処理がどんなものであれ、まずはデータがどこまで入っているかを確認して、処理を実行する範囲を決めないといけません。