shikumika’s diary

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

VBA

【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関数を活用して「複数シートのデータを抽出して一つにまとめる方法」を記載しました。この方法は、シートの枚数が多い場合や、繰り返しシートの更新がある場…

【Excel VBA】複数ブックのシートを一つのブックにまとめるサンプル

VBA

Excelのデータ集計業務は、Power Queryを使うことで効率化が図れる場面が多くあります。 しかし、Power Queryでは扱いにくいデータ操作もあり、自動化を考慮するとVBAの活用が効率的となることもあります。 特に、いわゆる「神エクセル」と言われるような、…

【Excel VBA】テーブルに別ファイルのデータをインポート

Excelのテーブルに「別ファイルのシートにあるデータ」をインポートし、テーブルのデータを更新するVBAサンプルの備忘録。 作成の背景は、Power Queryで同じファイル内のシート(テーブル)をデータソースとする管理をしたいが、元のデータ自体は別ファイル…

【Excel VBA】置換リストで都度確認しながらWord文書の文字列を置換

前回の 【Excel VBA】Excelの置換リストでWord文書の文字列を一括置換 をベースに、置換対象を都度確認しながら実行するVBAのサンプル。置換リストで一致したキーワードについて、都度、置換するかのメッセージを表示し、確認しながら置換を実行します。 「…

【Word】VBA実行後も「元に戻す」は可能だが、変更履歴の記録が便利

WordのVBAは、ExcelのVBAと違い、VBA実行後に「元に戻す」(Ctrl+Z、Undo)が可能。ただし、既定の戻れる最大数は100のようで、VBA実行前にはファイルやフォルダのバックアップを取る習慣は大事。加えて、加えて、Wordの場合は、変更履歴の記録をONにすると…

【Excel】VBA実行後に 「元に戻す」はできないので事前対処

VBA

ExcelのVBA実行後、「元に戻す」(Ctrl+Z、undo)はできません。VBAの実行で誤った操作や予期せぬ結果が発生して困ることがあるので、事前に対処方法を考えておくことが重要です。VBAでファイルコピーする方法などバックアップ方法の備忘録。

【Excel VBA】Excelの置換リストでWord文書の文字列を一括置換

ExcelのVBAで、置換リストからWord文書の文字列を一括置換する方法のサンプル。前回のWordのVBAを使用した「Word文書の文字列をExcelの置換リストで一括置換する方法」と同様のことをExcelのVBAで実施するサンプルを作成してみました。置換リストの内容に応…

【Word VBA】Word文書の文字列をExcelの置換リストで一括置換

WordのVBAで、Excelで作成の置換リストを選択し、Word文書内の文字列を一括で置換する方法の備忘録。執筆ルールに従った修正業務を効率化するため、Excelの置換リストで一括置換するVBAサンプルを作成してみました。

【Word VBA】Excelシートの最終行取得(xlUpで実行時エラー 424の対応)

WordのVBAで、Excelのシートにある情報を使った繰り返し処理等をするために、最終行取得をしようとすると「実行時エラー424」となったので解決方法の備忘録。なお、使用のバージョンは「Microsoft® Word for Microsoft 365 MSO」。

【Excel】OneDriveのファイルURLをローカルパスに変換(数式で文字列の置換)

Excelの数式で、CELL(“filename”,A1)やVBAのThisWorkbook.Pathを使用したとき、OneDriveに同期したフォルダではローカルパスが取得できず、VBA等が適切に動作しないことがあります。Excelの数式を利用して、OneDriveのファイルURLをローカルパスに変換してみ…

【Excel】ファイルの保存場所変更に備えた準備(ファイルパスの自動更新)

リンクの設定等があるExcelファイルの場合、保存場所の変更に注意が必要です。特に、VBAやPower Queryなどで固定のファイルパスに依存した構築を行うと、Excelに不慣れな人がファイルの保存場所変更に対応できない等の問題が生じる可能性があります。 ファイ…

【Excel】VBAで「 テーブルをセル範囲に変換してエクスポート」のサンプル

Excelのテーブル機能やPower Queryを含むファイルを他者に渡すことが妥当でないケースが時折あります。そこで、VBAで「 テーブルをセル範囲に変換してエクスポート」のサンプルを作成してみた備忘録です。

【Excel】VBAのメンテナンス性向上のため設定情報をテキストボックスに記載

VBA

VBAの利用で、業務の属人化によるリスクが指摘されることがよくあります。そのため、誰かとVBAを含むExcelファイルを共有するような場合、業務変更が生じても少しExcelに詳しければ修正ができるようにと、初期値や設定情報をExcelのシートに記載などの対応を…

【Excel】VBAで、印刷時に文字が切れないように行高さを設定するサンプル

Excelを使用してセルに長文を入力し、複数行表示にしたデータを印刷すると、文章の下端が切れてしまうことがあります。 その原因と解決方法の基本は次のとおりで、標準フォントで調整が必要。 shikumika.org しかし、複数のフォントを使用していたり標準フォ…

【Excel】VBAで列幅と行高さを設定する際は単位の違いに注意

ExcelのVBAを使用して、列幅や行高さを設定する際は単位の違いに注意が必要。知らないと混乱の元になるので備忘録。 具体的には、行の高さを設定するRowHeightと、列の幅を設定するColumnWidthを使って、 Rows(1).RowHeight = 30 Columns(1).ColumnWidth = 3…

【Word】VBAで、画像は「レイアウト(文字列の折り返し)」によってオブジェクトが変わる

Wordの画像は「レイアウト(文字列の折り返し)」で行内に設定されているか否かでVBAでの処理方法が違うのでメモ。 例えば、以下で作成したVBAサンプルは、レイアウトが行内に設定された図が対象で、他のレイアウトだと処理できない。Wordのファイル内にある…

【Word】VBAで画像のレイアウトを行内から「上下の文字配置」に変更

WordのVBAで、画像のレイアウトを行内から上下の文字配置に変更するサンプル。 必要になった背景は、Wordの画像は「レイアウト オプション」で行内に設定されていると、画像の複数選択ができないようで一括での更新が手間だったため。 それで、次のような簡…

【Word】VBAでステップ記録ツールのmhtファイルを編集する準備

WordのVBAで、ステップ記録ツールのmhtファイルをWordで編集するポイント で示した最初のルーチンについて、一通りのパーツ(VBAの各サンプル)が作成できました(目的は、手順書を作成です)。 この最初のルーチン(各サンプルVBAの実行)を実行することで…