和風スパゲティのレシピ

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

ブック・ファイル

73本目:新規ブックにボタン作成しマクロ登録

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

Workbook_BeforeCloseとAuto_Closeの違い

Workbook_BeforeCloseとAuto_Closeの違いを解説します。どちらもブックを閉じる直前にマクロを自動実行する仕組みですが、閉じるのを中止する機能を有するbeforecloseが上位互換のためこちらを使いましょう。

Workbook_OpenとAuto_Openの違い

Workbook_OpenとAuto_Openの違いを解説します。どちらもブックを開いた際にマクロを自動実行する仕組みですが、機能面に差はないため、基本はThisWorkbookに書けて管理しやすいWorkbook_Openを使っておきましょう。

ブックを閉じるときにマクロを自動実行する - BeforeClose

ブックを閉じる際にマクロを自動で実行するにはBeforeCloseイベントを使用します。引数CancelにTrueを渡すと、ブックを閉じるのを中止できます。イベントを実行せずにブックを閉じるにはEnableEventsをFalseにします。

ブックを開いたときにマクロを自動実行する - Workbook_Open

ブックを開いたときにマクロを自動実行するにはWorkbook_Openイベントを利用します。ただし実際には「マクロを有効化」した際に実行されるため、本当に開いた直後に実行させるにはいくつかの工夫が必要になります。

選択セル範囲のパスからフォルダを一括作成するマクロ

選択セル範囲にあるフォルダパスからフォルダを一括作成するマクロを紹介します。日付をTEXTJOIN関数で繋げてフォルダパスを生成するなど、規則性のあるフォルダを一括生成する際にご活用ください。

フォルダの構成をシートに書き出すマクロ

フォルダの構成をシートに書き出すマクロを紹介します。ダイアログで選択したフォルダの構成を新規シートに出力します。実行型の便利マクロですので、「個人用マクロブック」などに搭載して使ってください。

ダイアログボックスでファイルを複数指定する

複数のファイルを一括で選択できるダイアログボックスを表示するには、GetOpenFilenameメソッドの引数MultiSelectにTrueを渡すか、FileDialogオブジェクトのプロパティAllowMultiSelectにTrueを代入して実行します。

GetOpenFilenameとFileDialogの違い

ダイアログボックスによるファイル選択を実行する、GetOpenFilenameメソッドとFileDialogオブジェクトの違いを解説します。FileDialogの方が高機能ですがコードが面倒な傾向があります。

名前を付けて保存ダイアログを開く-GetSaveAsFilename

名前を付けて保存ダイアログを開くにはGetSaveAsFilenameメソッドを使用します。このメソッドは実際の保存はせず選択されたファイルのパスを返してくれるだけですので、実際の保存処理はこの後に実行してください。

GetOpenFilenameとGetSaveAsFilenameの違い

ダイアログでファイルを選択する機能であるGetOpenFilenameとGetSaveAsFilenameの違いを解説します。どちらもパスをStringで返す点は同じですが、存在しないファイルを指定できる点などが異なります。

ダイアログボックスでファイルを指定・選択する

ダイアログボックスを開いてユーザーにファイルを選択してもらうにはGetOpenFilenameメソッドを使用します。初期フォルダの指定などより複雑な操作をを行いたい場合はFileDialogオブジェクトを使用してください。

ブックが読み取り専用か判定する - ReadOnly

ブックが読取専用か判定するには、WorkbookオブジェクトのReadOnlyプロパティを判定します。ReadOnlyは読み取り専用プロパティで、このプロパティに代入して読み取り専用の設定を変更することはできません。

ブックの読み取り専用を解除する - ChangeFileAccess

ブックの読み取り専用を解除するにはWorkbookのChangeFileAccessメソッドが用意されているのですが、非常に癖が強いメソッドのため、一旦ブックを閉じてOpenでブックを開き直した方が良い場面が多いです。

ブックを読み取り専用で開く - ReadOnly

ブックを読み取り専用で開くにはWorkbooks.Openの引数ReadOnlyをTrueに指定します。ただし既に開いているファイルに対して実行しても、エラーにはならず、かつ読取専用にはなってくれませんのでご注意ください。

ブックを読み取り専用にする - ChangeFileAccess

開いているブックを読み取り専用にするにはWorkbookのChangeFileAccessメソッドを使用します。読取専用ブックに実行するとエラーになってしまうためReadOnlyプロパティを調べてから実行してください。

80本目:読み取り専用で保存できないブックにする

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

フォルダ内のファイル一覧を取得する汎用関数

フォルダ内の複数ファイルへ同じ処理を行う場合、①まずは対象ファイルのリストを取得、②そのリスト内の全ファイルへ処理のように処理を段階化するのが便利です。この①を簡単に行うための汎用関数を紹介します。

82本目:ブックのドキュメントプロパティを取得

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

84本目:ブックの自動バックアップ

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

89本目:2つのフォルダの統合

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

ZIPファイルをマクロで解凍する

Zipファイルをマクロで解凍する方法を解説します。WScript.ShellオブジェクトのRunメソッドを使用して、ZIPファイルを解凍するPowerShellをVBAから呼ぶのが一番簡単です。

93本目:複数ブックを連結して再分割

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

フォルダを空にする(ファイル・フォルダを全削除)

フォルダを空にするには、ワイルドカード「*」を使った一括削除をファイル・フォルダ両方へ実行します。Killは可能ですがRmDirではできないため、FileSystemObjectのDeleteFile/DeleteFolderメソッドを利用します。

フォルダ内のすべてのファイルを削除する - Kill

フォルダ内のすべてのファイルを削除するには、Killステートメントのワイルドカード*を用いた一括削除を用いるのが簡単です。FileSystemObjectのDeleteFileメソッドでも全く同じ処理を実行可能です。

フォルダ内の全ブックを1シートに結合するマクロ

アクティブブックと同フォルダ内のブックを1シートに結合するマクロを紹介します。内部で汎用関数を動かしており、ブック名・シート名・拡張子の条件を指定できますのでこちらも併せてご活用ください。

ブックが保存済みか調べる - Savedプロパティ

ブックが保存済みかどうかを判定するには、WorkbookオブジェクトのSavedプロパティを調べます。このプロパティは代入も行うことができ、Trueにすることでブックを閉じる際の保存確認ダイアログを出なくすることができます。

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

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

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

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

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

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