-
【Excel VBA】Workbook_Openなどの自動実行マクロを無効にしてブックを開く方法
VBAで他のブックを開く際、そのブックにWorkbook_Openイベントが設定されていると、ファイルを開いた瞬間に意図せずそのマクロが実行されてしまいます。データを読み書きしたいだけなのに、メッセージボックスが表示されたり、想定外の処理が始まったりし... -
【Excel VBA】マクロで開いたブックを「最近使ったアイテム」の履歴に追加する方法
VBAマクロで特定のファイルを開く処理を自動化した場合、通常そのファイルはExcelの「最近使ったアイテム」の一覧には追加されません。しかし、マクロで使ったファイルを後で手動で開きたい時に、履歴に残っていると非常に便利です。 この記事では、Workbo... -
【Excel VBA】「リンクの更新」メッセージを表示させずにブックを開く方法
他のExcelファイルへの参照リンクが含まれているブックをVBAで開こうとすると、「このブックには、他のデータソースへのリンクが含まれています。」というメッセージが表示され、マクロが一時停止してしまうことがあります。これでは、完全な自動化は実現... -
【Excel VBA】ブックの自動保存をVBAでオン/オフする方法 (.AutoSaveOn)
Microsoft 365のExcelでは、OneDriveやSharePointに保存されたファイルに対して「自動保存」が標準でオンになっています。これは共同編集や不意のシャットダウンに非常に便利な機能ですが、VBAマクロで大量のデータを処理する際には、一つ一つの変更が即座... -
【Excel VBA】ブックの状態を確認する方法(読み取り専用・互換モード)
VBAマクロを実行する際、対象となるExcelブックがどのような状態で開かれているかによって、処理を分岐させたり、エラーを未然に防いだりする必要が出てくることがあります。 特に重要なのが、「このブックは編集可能なのか?」や「古いファイル形式ではな... -
【Excel VBA】パスワードで保護されたExcelブックを開く方法
VBAで他のブックを操作する際、対象のブックが「読み取りパスワード」で保護されているケースがあります。このようなブックも、VBAを使えばパスワードを自動で入力して開くことが可能です。 この記事では、Workbooks.OpenメソッドのPassword引数を使った基... -
【Excel VBA】ファイルパスを指定して既存のブックを開き、操作する方法
VBAでマクロを組む上で、「別のExcelファイルを開いて、そこからデータを読み取りたい」または「処理結果を別のファイルに書き込みたい」といったブックをまたいだ操作は頻繁に発生します。 この記事では、VBAで指定したパスにある既存のExcelブックを開き... -
【Excel VBA】ThisWorkbookとActiveWorkbookの決定的な違いと正しい使い分け
Excel VBAでコードを書き始めると、多くの人がThisWorkbookとActiveWorkbookという2つのキーワードに遭遇します。これらはどちらもブックを指しているように見えますが、その意味は全く異なり、この違いを理解していないと、意図しないブックを操作してし... -
【Excel VBA】新規ブックを追加し、オブジェクト変数で確実に操作する方法
VBAでデータを集計し、その結果を新しいブックにまとめて保存する、といった処理は非常に一般的です。このとき、「Workbooks.Addで新しいブックを作ったはいいが、そのブックをどうやって正確に操作すれば良いのか?」という問題に直面することがあります... -
【Excel VBA】複数のExcelブックを切り替えて操作する2つの方法
VBAで複数のExcelファイル(ブック)にまたがる処理、例えば「データブックから集計ブックへ値をコピーする」といったマクロを作成する際には、操作の対象となるブックを正確に切り替える必要があります。 VBAで特定のブックをアクティブにする(最前面に... -
【Excel VBA】シート上の全グラフを個別の画像ファイルとして一括保存する方法
Excelで作成した複数のグラフを、PowerPointの資料やWebサイトで使いたい場合、一つずつ右クリックして「図として保存」を繰り返すのは非常に手間がかかります。 VBAを使えば、シート上にあるすべてのグラフを、それぞれのグラフタイトルをファイル名とし... -
【Excel VBA】シートをPDFファイルとして出力(エクスポート)する方法
作成したExcelの資料を、他の人に共有したり、証憑として保存したりする際には、レイアウトが崩れず、誰でも開けるPDF形式に変換するのが一般的です。手作業でもPDF化は可能ですが、VBAを使えばこの操作をボタン一つで自動化できます。 この記事では、VBA... -
【Excel VBA】特定の条件を満たさないと印刷できないように制限する方法 (BeforePrintイベント)
「承認者の名前が入力されていないと印刷させたくない」「特定の日付が入力されるまで、このシートは印刷禁止にしたい」など、Excelファイルに特定のルールを設け、それを満たさない限り印刷できないように制御したい、というニーズは少なくありません。 V... -
【Excel VBA】印刷設定の処理を高速化する鉄板テクニック (PrintCommunication)
印刷範囲や用紙の向き、余白など、VBAでPageSetupに関する設定を変更するマクロを実行した際に、「処理が思ったより遅い…」と感じたことはありませんか?特に、ネットワーク上のプリンターを使っているとその遅さは顕著になります。 実はその原因、VBAが印... -
【Excel VBA】印刷するプリンターを選択・切り替える2つの方法
VBAで印刷処理を自動化する際、社内に複数のプリンターがあったり、PDFとして出力したりと、状況に応じて出力先を切り替えたい場合があります。 VBAを使えば、「マクロ実行時にユーザーがプリンターを選べるようにする」ことや、「特定のプリンターに固定... -
【Excel VBA】行番号・列番号や枠線を含めてシートを印刷する方法
Excelのシートを印刷する際、分析やレビューのために「A, B, C...」といった列番号や「1, 2, 3...」の行番号、またセルの区切りを示す薄い灰色の枠線(グリッド線)も一緒に印刷したい、という場合があります。 これらの設定は通常、「ページレイアウト」... -
【Excel VBA】印刷総ページ数を取得する方法と改ページの点線を非表示にする方法
Excelで作成した資料を印刷する前に「全部で何ページになるか」をマクロで取得したり、編集作業中に表示される「改ページの点線が煩わしい」と感じたりすることはありませんか? VBAを使えば、これらの情報を簡単に取得・操作することが可能です。この記事... -
【Excel VBA】印刷時の改ページ位置を一定間隔で自動設定する方法
大量のデータが入力されたExcelシートを印刷すると、意図しない場所で改ページされてしまい、表の途中で切れて見づらくなってしまうことはありませんか? 手作業で一つずつ改ページを設定するのは、データ量が多いと非常に手間がかかります。 VBAを使えば... -
【Excel VBA】印刷時のヘッダー・フッターを自由自在に設定する方法
Excelで作成した帳票やレポートを印刷する際、各ページに「文書のタイトル」「日付」「ページ番号」「ファイル名」などを記載するヘッダーやフッターは欠かせません。これらの設定を手作業で行うのは手間がかかりますが、VBAを使えば定型的な設定をすべて... -
【Excel VBA】印刷を自動化する4つの基本パターン(シート・ブック・範囲指定)
定型的なレポートや資料を作成する際、毎回同じシートやセル範囲を選択して印刷するのは手間がかかります。VBAを使えば、「印刷」ボタン一つで、決まった対象を、決まった設定で印刷する処理を自動化し、作業効率を大幅に向上させることができます。 この... -
【Excel VBA】Excelのセル範囲をJSON形式に変換して出力する方法
Web APIとの連携や、最新のWebアプリケーションでデータをやり取りする際、**JSON(JavaScript Object Notation)**形式のデータが標準的に使われます。Excelで管理しているデータを、このJSON形式に変換して出力したい、というニーズは年々高まっています... -
【Excel VBA】ワークシートをテンプレートとしてHTMLレポートを自動生成する方法
VBAで複雑なHTMLレポートを作成する際、すべてのHTMLコードをVBAのコード内に文字列として記述するのは、非常に非効率でメンテナンスも困難です。 そこで今回は、HTMLの骨格を別のワークシートに「テンプレート」として記述しておき、VBAでそのテンプレー... -
【Excel VBA】Excelのセル範囲をHTMLのに変換する関数
Excelの表データを、WebページやHTMLメールで表示するための<table>タグに変換したい、というニーズは非常に多くあります。しかし、Forループで"<tr>"や"<td>"といったタグを文字列として連結していく方法は、コードが煩雑になりがちで... -
【Excel VBA】HTMLを自在に生成する「万能関数」の作り方 (Optional引数)
これまでの記事で、「特殊文字のエスケープ」「タグで囲む」「属性の追加」といった、HTML生成のための部品となる関数を個別に作成してきました。 今回はその集大成として、これらの部品をすべて内包し、引数の与え方によって様々なパターンのHTML要素を1... -
【Excel VBA】ハイパーリンク(aタグ)を動的に作成する自作関数
VBAでHTMLを生成する際、単なるテキストだけでなく、クリック可能なハイパーリンク(<a>タグ)を作成したい場面は頻繁にあります。ハイパーリンクは、<a href="リンク先URL">表示テキスト</a>のように、hrefという属性を持つのが特徴で... -
【Excel VBA】動的なタグ名でHTML要素を作成する自作関数
VBAでHTMLを生成する際、あるセルは<h1>タグで、別のセルは<p>タグで囲みたい、というように、内容に応じてHTMLタグを動的に変更したい場合があります。 この記事では、指定した文字列を、指定したタグ名で囲むシンプルな自作関数と、それを前... -
【Excel VBA】HTMLの特殊文字をエスケープ処理する最強の関数
Excelのセルに入力されたテキストをVBAでHTMLファイルに出力する際、> や <、& といった文字がセルに含まれていると、HTMLのタグと誤認されてしまい、表示が崩れる「文字化け」ならぬ「タグ化け」が起きてしまいます。 これを防ぐには、これらの... -
【Excel VBA】HTMLファイルを作成し、UTF-8で書き出す基本の方法
Excelで管理しているデータを、簡易的なWebページやHTML形式のレポートとして出力したい、という場合があります。VBAを使えば、HTMLタグを文字列として組み立て、.htmlファイルとして保存することが可能です。 この記事では、ADODB.Streamオブジェクトを利... -
【Excel VBA】Accessへのデータ登録で使うトランザクション処理 (Commit/Rollback)
ExcelからAccessへ大量のデータをインポートする際、「もし処理の途中でエラーが発生したらどうなるのか?」と考えたことはありますか?通常、エラーが起きた時点で処理は中断され、データが中途半端に登録された「壊れた」状態になってしまいます。 この... -
【Excel VBA】Accessに対しSQLコマンド(UPDATE/INSERT)を実行する方法
VBAでAccessデータベースを操作する際、一件ずつレコードを処理するのではなく、「条件に合う全てのレコードを一度に更新したい」または「新しいレコードを一件、SQLで直接追加したい」という場合があります。 このようなデータ操作には、SQL言語で記述し...