shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

VBA

【Excel VBA】一つ上のセルと比較して先頭から同じ文字までを白色に変換

VBA

Excelの一覧表で、一つ上のセルと比較して先頭から同じ文字までを白色に変換するVBAサンプルです。 総務省の「統計表における機械判読可能なデータ作成に関する表記方法」において、次のように「同じ名称を空白で省略せず、入力すること」とされています。 …

【Excel VBA】選択範囲のセル結合を解除して各セルに同じ値を入力

VBA

Excelで、集計・分析するときにセルを結合した表があると、セル結合を解除し、結合されていた値を各セルに入力が必要となる場面があります。 表を見やすくする目的でセルを結合したが、集計・分析のためにセル結合を解除したい時のVBAサンプルです。 内容: …

【Excel VBA】縦方向に連続する同じ値のセルを自動結合

VBA

Excelで集計・分析を考慮すると、セルを結合しないことが推奨されますが、表を見やすくするために同じ値のセルを結合したいことがあります。 この場合、個人的には、【Excel】セルを結合せずに「条件付き書式」で見やすい表に一括変換 を第一選択としていま…

【Excel VBA】一覧表から個票PDFを一括作成

VBA

ExcelのVBAで、一覧表から個票PDFを一括作成する方法です。個票シートを一括作成する方法は、【Excel VBA】一覧表から個票シートを一括作成です。このVBAを修正し、VBAがあるExcelファイルと同じフォルダに、個票PDFを一括エクスポートするサンプルです。 使…

【Excel VBA】一覧表から個票シートを一括作成

VBA

前回、【Excel】一覧表から個票のシート作成(VLOOKUP関数の利用)を紹介しました。今回はこの方法を活用し、VBAで一覧表から個票(単票)シートを一括作成するサンプルです。 内容: アウトプットイメージ VBAサンプル 補足説明 アウトプットイメージ 次の…

【Excel VBA】バックアップ用ファイルを既存ファイルに入替サンプル

VBA

ExcelのVBAで処理開始前のデータ状態を保存しておきたいときのVBAサンプル。 【Excel】VBA実行後に 「元に戻す」はできないので事前対処 にファイルやフォルダのコピー保存のサンプルがあります。 今回はバックアップ用ファイルの内容を既存ファイルに入替の…

【Word VBA】ユーザーフォームの呼び出し、リストボックスの利用サンプル

VBAで、ユーザーフォームの呼び出し、リストボックスに配列を代入し、ユーザーが選択した値を取得する簡単な事例の備忘録。 なお、個人的な考えとして、VBAの引継や属人化防止を考慮し、Excelであれば設定情報をシートに記載するなどで、可能な限りユーザー…

【Word VBA】差し込み印刷でレコード毎にPDFを保存するサンプル

WordのVBAを使用し、差し込み印刷でレコード毎にPDFを保存する方法の備忘録。Wordの差し込み印刷機能は、文章の一部を個別の名前等に変換して大量の文書を作成するのにとても便利です。それぞれのレコード単位で、PDFを作成、フィールドの名前で保存するVBA…

【Excel VBA】並び替えで複数条件を可変設定するサンプル(ParamArrayの事例)

VBA

Excel VBAで、並び替えの複数条件(キーとなる列、昇順・降順)を可変設定する汎用的なコードサンプルです。データ範囲も固定ではなく、最終行と最終列の情報から範囲が可変します。 コードの再利用性や可読性を向上させるため、処理(プロシージャ)をパー…

【Excel VBA】処理のパーツ化で引数を省略可能にする方法

VBA

Excel VBAで、コードの再利用や可読性を向上させるために処理(プロシージャ)のパーツ化があります。汎用性の高いパーツを作成するときは、引数を設定しますが、Optionalキーワードを使用して引数を省略可能にする方法を知っておくと便利です。 引数を省略…

【Excel VBA】シート名の配列から完全一致と部分一致の確認サンプル

VBA

ExcelのVBAで、指定した文字が配列の要素の中に存在するかを確認する方法について、シート名の配列で実施するサンプルです。 事例として、選択したシートの名前を配列に格納し、その配列内で指定した名前の完全一致と部分一致を確認します。 VBAサンプル 現…

【Excel VBA】処理を高速化するため2次元配列の活用サンプル

VBA

Excel VBAで数万行の大量データを処理を行う場合、セルのデータを一つずつ操作するよりも、一度に全てのデータを2次元配列に一括で読み込んでから処理を行った方が処理速度も向上し、データの取り扱いも便利になることが多いです。 VBAサンプル 以下に、2…

【Excel VBA】サンプルコードまとめ

VBA

Excel VBAの作成時に参考にするコード例や、エラーの発生と対応例をこちらにまとめていきます。 コードは一つの目的に対して、様々な処理内容や記述方法もあるので、基本パターンとしているものを中心に整理しています。 内容: ファイル操作関連 一覧の取得…

【Excel VBA】処理の進捗状況は表示して他の画面更新は停止

VBA

Excel VBAは、処理の進捗状況を表示しながら他の画面更新を停止することが可能です。 公式な情報は探せませんでしたが、ScreenUpdatingプロパティを使用して画面更新を停止した場合でも、ステータス バーの情報は更新される仕様のようです。 以前から仕様に…

【Excel VBA】開始時の実行確認と終了時のメッセージを表示する方法

VBA

Excel VBAでマクロを実行するとき、処理の開始と終了をメッセージで確認できると、ミスの防止や操作性の向上に役立ちます。 例えば、 マクロの実行ボタンを誤ってクリックし、意図しないデータ変更が発生してしまう。 処理がすぐに終了するマクロや、処理前…

【Excel VBA】選択しているオートシェイプの図形と同じタイプを一括で選択(複数タイプ可)

VBA

前回、VBAで選択しているオブジェクトと同じタイプを一括で選択する方法を記載しました。この方法は、 一括選択したいオブジェクトのタイプが一つのみで、複数タイプに対応していない オートシェイプの図形の詳細な分類に対応していない という仕様だったの…

【Excel VBA】選択しているオブジェクトと同じタイプを一括で選択

VBA

Excelで図形を操作するときに、同じタイプのオブジェクトを一括で選択したい場合があります。例えば、シート内にあるすべての「コネクタ: カギ線」だけを選択したり、「テキスト ボックス」だけを選択して色を変更したいときなどです。 しかし、Excelにはそ…

【Excel】外部参照で「値の更新」が出てファイル選択が求められた事例

Excelの外部参照は、他のExcelファイルのデータを参照するための便利な機能です。しかし、OneDrive上にあるファイルを参照する場合、予期せぬ挙動でエラーとなったので備忘録。 なお、使用のExcelは、Microsoft® Excel® for Microsoft 365 MSOです。 発生し…

【Excel VBA】Setでワークブックを変数に割り当て(オートメーションエラーの発生事例)

VBA

ExcelのVBAを使って作業を自動化する際、ワークブックを変数に割り当てることはよくあります。このとき、変数が不要になったらSetステートメントでNothingを実施しておかないと、次のような"オートメーションエラー"が発生することがあります。 実行時エラー…

【Excel VBA】セルのアクティブ化でエラーが発生する原因と対応

VBA

ExcelのVBAで、セルのアクティブ化や選択をしようとすると、セルが存在するにも関わらず「実行時エラー '1004': Range クラスの Select メソッドが失敗しました」「Range クラスのActivate メソッドが失敗しました」というエラーが発生する時があります。 し…

【Excel VBA】処理が止まらない時に強制停止する方法(Breakキーがない場合)

VBA

VBAの実行時、ループ処理が終わらないなど、処理が止まらず困った時に備えて、強制停止の方法を知っておくことは重要です。 基本の方法 基本の方法は、「Ctrl + BREAK」 キーを選択です。 もしくはEscキーの選択や、「Ctrl + Pause」キーなどで、VBAの実行を…

【Excel VBA】指定フォルダ内の全てのサブフォルダを一覧表示するコード例

VBA

VBAで、指定フォルダ内にある全てのサブフォルダを一覧表示するコード例。何かの処理目的で「フォルダ情報だけ一覧にしたい」「全てのフォルダを対象に処理をしたい」といったケースで、再帰プロシージャの基本サンプルです。 事例の前提 Excelファイル内に…

【Excel VBA】他のブックのセルの値を取得するユーザー定義関数の検討結果

VBA

ExcelのINDIRECT関数は、同じブック内にある複数のシートの値を抽出する場合には有効ですが、他のブックの値を抽出する場合はブックを事前に開いておく必要があります。なるので、Excelの数式として利用できるユーザー定義関数で対応できないかを検討した備…

【Excel VBA】PDF変換時にビューアーが起動しないようにする方法

VBA

Excel VBAで、ExcelシートをPDFファイルに変換するとき、デフォルトではPDFファイルが保存された後にビューアーが起動してファイルが表示されます。便利な機能ですが、複数のPDFファイルに連続で変換する場合などは、ビューアーの起動は余分です。

【Excel VBA】シートを複数選択する方法(For 文などのループで)

VBA

Excel VBAで、シートのインデックス番号で、複数選択する方法。For 文などのループで、選択したシートを一つずつ処理ではなく、一旦該当するシートを全て選択して処理したいときがあります。このようなケースでは、Worksheet.Select メソッドのパラメーター…

【Excel VBA】指定フォルダ内のExcelファイルを順番に処理(FileSystemObjectの利用)

VBA

ExcelのVBAで、ユーザーが指定フォルダを選択し、フォルダ内のExcelファイルを順番に処理するサンプル。前回のDir関数を利用した方法と同様の処理をFileSystemObjectを利用して実現するサンプルです。 前回のDir関数の方法は、サブフォルダ内の処理ができな…

【Excel VBA】指定フォルダ内のExcelファイルを順番に処理(Dir関数の利用)

VBA

ExcelのVBAで、ユーザーが指定フォルダを選択し、フォルダ内のExcelファイルを順番に処理するサンプル。Dir関数を利用した方法で、別途紹介するFileSystemObject の方法を基本とした方がよい印象 Excel操作で処理が完結するような業務は、VBAでの処理が便利…

【Excel VBA】複数ブックのデータ(単票)をセル位置変更があっても一覧表にまとめた事例

VBA

ExcelのVBAで、複数ブックのデータ(単票)をセル位置変更があっても一覧表にする事例。 前回の「【Excel VBA】複数ブックのデータ(単票)を一覧表にまとめる事例」は、同じフォーマットのExcelファイルが前提でした。 しかし、様式変更による項目追加など…

【Excel VBA】複数ブックのデータ(単票)を一覧表にまとめる事例

VBA

ExcelのVBAで、複数ブックのデータ(単票)を一覧表にまとめる事例です。Power Queryでの集計が難しい「神エクセル」と言われるような、紙印刷のレイアウトを前提にしたExcelシートをVBAで一覧表にした備忘録。 同じフォーマットで入力されたExcelファイルを…

【Excel VBA】複数シートのデータを抽出して一つのシートにまとめる事例

VBA

ExcelのVBAで、複数シートのデータを抽出して一つのシートにまとめる事例の備忘録。前回、INDIRECT関数を活用して「複数シートのデータを抽出して一つにまとめる方法」を記載しました。この方法は、シートの枚数が多い場合や、繰り返しシートの更新がある場…