確認日:2026年9月24日。Microsoft 公式の VBA リファレンス(learn.microsoft.com)、Microsoft サポート、Microsoft 365 開発者ブログで確認しました。サンプルマクロは公式リファレンスの記載に沿って書いたもので、筆者の環境(Mac)では実行していません。この記事は2025年9月に公開した「ChatGPTとVBAで実現する業務自動化革命」を、生成AIでマクロを安全に使うための入門記事として全面的に書き直したものです。
はじめに:この記事で分かること
「毎月、支店から届く Excel を開いてはコピーして貼り付ける」。こうした繰り返しの作業は、Excel に付いている VBA(ブイ・ビー・エー)というプログラムで自動化できます。
今は、ChatGPT・Claude・Microsoft Copilot などの生成AIに頼めば、VBA のコードを書いてもらえます。ただし、AI が書いたコードをそのまま動かすと、ファイルを消したり上書きしたりする事故が起こりえます。この記事では、次のことを順番に説明します。
- VBA とは何か、どこで動くか
- 準備:開発タブの出し方と、マクロ有効ブック(.xlsm)での保存
- マクロのセキュリティ:ネットから来たファイルのマクロは既定でブロックされる
- AI への頼み方(そのまま使える依頼文のテンプレート)
- 実務で使える小さなサンプル:フォルダ内のブックを1枚のシートに集める
- 実行前のバックアップと確認のしかた、生成コードで気をつける点
- VBScript の廃止予定が VBA に与える影響
- Copilot・Python in Excel・Office Scripts・Power Automate との使い分け
VBA とは:Excel の操作を「手順書」にして自動で動かす仕組み
VBA(Visual Basic for Applications)は、Excel や Word などの Office に組み込まれているプログラミング言語です。Microsoft の入門記事「Getting started with VBA in Office」では、マウスやキーボード、ダイアログでできる操作のほとんどは VBA でもでき、一度できれば100回でも同じようにできる、と説明されています。
VBA で書いた一連の処理をマクロと呼びます。たとえば次のような作業に向いています。
- 複数のファイルから決まった範囲を集めて、1つの表にまとめる
- 毎回同じ手順で行う書式の整え、並べ替え、不要な列の削除
- シートごとに PDF で保存する、ファイル名を付け直す、といった定型作業
VBA が動く場所
VBA はパソコンにインストールするデスクトップ版の Excel で動きます。Microsoft の比較ページ「Office Scripts と VBA マクロの違い」によると、VBA マクロが動くのは Windows 版と Mac 版の Excel で、ブラウザで使う Excel on the web や iPhone・iPad 版では動きません。
同じページでは「VBA はデスクトップ向け、Office Scripts はクラウドで安全に使える仕組み」と整理されています。また VBA は、デスクトップ版の Excel に最初から入っていて、特別なライセンスは不要です。
準備:開発タブを出して、マクロ有効ブック(.xlsm)で保存する
1. 開発タブを表示する(Windows)
VBA の編集画面を開くボタンは「開発」タブにあります。開発タブは最初は表示されていないので、Microsoft サポートの手順に沿って表示します。
- [ファイル] タブを開き、[オプション] を選ぶ
- [リボンのユーザー設定] を選ぶ
- 右側の [メイン タブ] の一覧で [開発] にチェックを入れ、[OK] を押す
一度表示すれば、チェックを外すまで表示されたままです。
2. コードを書く場所(標準モジュール)を用意する
- [開発] タブの [Visual Basic] を押して、VBA の編集画面(Visual Basic Editor)を開く
- メニューの [挿入] → [標準モジュール] で、コードを書くページを追加する
- AI が書いたコードを貼り付ける
編集画面の [ツール] → [オプション] にある「変数の宣言を強制する」をオンにしておくと、新しいモジュールの先頭に Option Explicit が自動で入ります。これは「使う変数は必ず宣言する」というルールで、変数名の打ち間違いをすぐに見つけられるようになります。
3. マクロ有効ブック(.xlsm)で保存する
ふつうの Excel ファイル(.xlsx)には、マクロを保存できません。マクロ入りのブックを保存しようとすると「ブックにはマクロまたは VBA のコードが含まれています」という確認が出ます。Microsoft サポートの手順は次のとおりです。
- 確認メッセージで [いいえ] を選ぶ
- [名前を付けて保存] の [ファイルの種類] で Excel マクロ有効ブック (*.xlsm) を選ぶ
- [保存] を押す
ここで [はい] を選ぶと、マクロを含まないブックとして保存され、書いたコードは消えてしまうので注意してください。
マクロのセキュリティ:ネットから来たファイルは既定でブロックされる
マクロは便利な反面、ウイルスなどを仕込む手口にも使われてきました。Microsoft は「インターネットからのマクロは既定でブロックされる」という管理者向けページで、VBA マクロは悪意のある攻撃者がマルウェアやランサムウェアを送り込む一般的な手段だと説明しています。
そのため、Windows 版の Office では、インターネットから取得したファイル(メールの添付やブラウザでのダウンロードなど)のマクロは、既定で実行がブロックされます。ファイルを開くと「ファイルのソースが信頼されていないため、Microsoft はマクロの実行をブロックしました」という趣旨の「セキュリティ リスク」のバーが表示され、以前のような「コンテンツの有効化」ボタンはありません。
- 対象:Windows 版の Access・Excel・PowerPoint・Project・Publisher・Visio・Word
- 対象外:Mac 版、Android・iOS 版、Office on the web
- 始まった時期:Excel などは Current Channel のバージョン2206(2022年7月27日から順次)
- 判定の手がかり:Windows がダウンロードしたファイルに付ける「Mark of the Web」という目印
自分で作った・信頼できるファイルのマクロを動かすには
出どころが確かなファイルなら、Microsoft サポートの案内どおり、次のどちらかでブロックを外せます。
- ファイル単位:ファイルを右クリック → [プロパティ] → [全般] タブの下の [ブロック解除](英語版では Unblock)にチェックを入れて [OK]
- フォルダ単位:[ファイル] → [オプション] → [トラスト センター](バージョンによっては [セキュリティ センター])→ [トラスト センターの設定] → [信頼できる場所] に、マクロ入りのファイルを置くフォルダを追加する(手順)
信頼できる場所に置いたファイルは、チェックを通らずにマクロが動きます。ダウンロードフォルダのような「何でも入る場所」を登録するのはやめましょう。会社のパソコンでは、管理者の設定で変更できないこともあります。
マクロの設定は既定のままにする
[トラスト センターの設定] → [マクロの設定] の既定は、「通知を表示したうえで VBA マクロを無効にする」設定です。公式ページでは「すべてのマクロを有効にする」は保護されない設定として、推奨されていません。AI が「動かないときはマクロをすべて有効にしてください」と答えても、従わないでください。
AI への頼み方:依頼文のテンプレート
AI に VBA を書いてもらうときにいちばん大切なのは、「何を」「どんな環境で」「どんなデータに」「何をしてはいけないか」を具体的に伝えることです。旧記事で紹介した「5つの支店の売上ファイルを1つにまとめたい」という例を、そのまま使える依頼文にしました。
あなたは Excel VBA に詳しいアシスタントです。次の条件でマクロを書いてください。
【やりたいこと】
フォルダ内にある複数の .xlsx ファイルから、1枚目のシートの表を集めて、
このブックの新しいシートに縦に並べたい。
【環境】
・Windows 11 / Microsoft 365 の Excel(デスクトップ版)
・マクロはこのブック(集計用.xlsm)の標準モジュールに置く
【データの形(ダミー)】
・各ファイルの1行目は見出し(日付, 支店, 商品, 数量, 金額)
・2行目からデータ。A列が空になったら表の終わり
・列の並びは全ファイル共通
【守ってほしいこと】
・Option Explicit を付け、変数はすべて宣言する
・エラー処理を入れ、途中で止まっても画面更新などの設定を元に戻す
・元のファイルは読み取り専用で開き、保存せずに閉じる
・ファイルの削除(Kill)、上書き保存、既存シートの削除はしない
・結果は毎回新しいシートに書く
・処理したファイル数と、開けなかったファイル名を最後に表示する
【出力してほしいもの】
1. コード全体
2. 各部分が何をしているかの短い説明
3. 実行前に私が確認すべき点
頼み方のコツ
| あいまいな頼み方 | 伝わる頼み方 |
|---|---|
| 売上を集計するマクロを作って | フォルダ内の .xlsx の1枚目から、2行目以降のデータを新しいシートに集めて |
| (環境を書かない) | Windows 11 / Microsoft 365 の Excel。Mac で使うならそう書く |
| 実データを貼り付ける | 見出しと、形だけ同じダミーのデータを2〜3行だけ見せる |
| (禁止事項を書かない) | 削除・上書き保存・既存シートの削除はしない、と明記する |
| コードだけもらう | 各部分の説明と「実行前に確認すべき点」も書いてもらう |
- 小さく頼む:最初から全部を頼まず、「ファイル名の一覧を出すだけ」などから始めて、動いたら次を足す
- エラーはそのまま伝える:エラー番号とメッセージ、黄色く光った行をコピーして「この行でこのエラーが出た」と返す
- 説明させる:分からない行は「この行は何をしていますか」と聞く。説明できないコードは使わない
どの AI を使うか迷ったら、GPT-6 Astra・Claude・Gemini のやさしい比較も参考にしてください。ChatGPT のデスクトップアプリで作業を進める方法は ChatGPT Work 入門 で解説しています。
サンプル:フォルダ内のブックを1枚のシートに集める
上のテンプレートで頼んだときに返ってきてほしい形の例として、フォルダ内の複数の .xlsx ファイルから、1枚目のシートの表を1枚のシートに縦に集めるマクロを示します。AI が書いたコードを読むときの「お手本」にしてください。
前提
- Windows 版のデスクトップ Excel(フォルダ選択の画面や
Dir関数の動きは、Mac では異なる部分があります) - 集めるファイルは .xlsx で、1枚目のシートの1行目が見出し、2行目からデータ、A列が空になったところで表が終わる
- 列の並びはすべてのファイルで同じ
- このマクロは、集計用のマクロ有効ブック(例:集計用.xlsm)の標準モジュールに貼る
コード
Option Explicit
' フォルダ内の .xlsx ブックの1枚目のシートを、このブックの新しいシートに集める
' ・元のファイルは読み取り専用で開き、保存せずに閉じる
' ・結果は毎回新しいシートに書く(既存のシートは上書きしない)
Public Sub CollectWorkbooks()
Dim prevSecurity As MsoAutomationSecurity
Dim folderPath As String
Dim fileName As String
Dim srcBook As Workbook
Dim srcSheet As Worksheet
Dim outSheet As Worksheet
Dim lastRow As Long
Dim lastCol As Long
Dim outRow As Long
Dim fileCount As Long
Dim skipped As String
Dim errNo As Long
Dim errMsg As String
prevSecurity = Application.AutomationSecurity
' 1. 集めるファイルが入ったフォルダを選ぶ
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "集計するブックが入ったフォルダを選んでください"
If .Show <> -1 Then Exit Sub ' キャンセルされたら何もしない
folderPath = .SelectedItems(1)
End With
If Right(folderPath, 1) <> Application.PathSeparator Then
folderPath = folderPath & Application.PathSeparator
End If
On Error GoTo ErrHandler
Application.ScreenUpdating = False
' 2. 結果を書く新しいシートを、いちばん右に追加する
Set outSheet = ThisWorkbook.Worksheets.Add( _
After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
outSheet.Name = "集計_" & Format(Now, "yyyymmdd_hhnnss")
outRow = 1
' 3. フォルダ内の .xlsx を1つずつ処理する
fileName = Dir(folderPath & "*.xlsx")
Do While fileName <> ""
If Left(fileName, 2) <> "~$" Then ' 編集中に作られる一時ファイルは除く
' 読み取り専用・マクロ無効・リンク更新なしで開く
Set srcBook = Nothing
Application.AutomationSecurity = msoAutomationSecurityForceDisable
On Error Resume Next
Set srcBook = Workbooks.Open(Filename:=folderPath & fileName, _
UpdateLinks:=0, ReadOnly:=True)
On Error GoTo ErrHandler
Application.AutomationSecurity = prevSecurity
If srcBook Is Nothing Then
skipped = skipped & vbLf & fileName ' 開けなかったファイルは記録して次へ
Else
Set srcSheet = srcBook.Worksheets(1)
lastRow = srcSheet.Cells(srcSheet.Rows.Count, 1).End(xlUp).Row
lastCol = srcSheet.Cells(1, srcSheet.Columns.Count).End(xlToLeft).Column
' 見出しは最初のファイルからだけ写す
If outRow = 1 Then
outSheet.Cells(1, 1).Value = "ファイル名"
outSheet.Cells(1, 2).Resize(1, lastCol).Value = _
srcSheet.Cells(1, 1).Resize(1, lastCol).Value
outRow = 2
End If
' 2行目以降のデータを「値」として写し、A列にファイル名を入れる
If lastRow >= 2 Then
outSheet.Cells(outRow, 1).Resize(lastRow - 1, 1).Value = fileName
outSheet.Cells(outRow, 2).Resize(lastRow - 1, lastCol).Value = _
srcSheet.Cells(2, 1).Resize(lastRow - 1, lastCol).Value
outRow = outRow + lastRow - 1
End If
srcBook.Close SaveChanges:=False ' 元のファイルは保存しない
Set srcBook = Nothing
fileCount = fileCount + 1
End If
End If
fileName = Dir() ' 次のファイルへ
Loop
Application.ScreenUpdating = True
If skipped = "" Then
MsgBox fileCount & " 個のファイルを「" & outSheet.Name & "」に集計しました。", vbInformation
Else
MsgBox fileCount & " 個のファイルを集計しました。" & vbLf & _
"次のファイルは開けなかったため飛ばしました:" & skipped, vbExclamation
End If
Exit Sub
ErrHandler:
errNo = Err.Number
errMsg = Err.Description
On Error Resume Next ' 後片付け中のエラーで止まらないようにする
If Not srcBook Is Nothing Then srcBook.Close SaveChanges:=False
Application.AutomationSecurity = prevSecurity
Application.ScreenUpdating = True
MsgBox "エラーのため中断しました。" & vbLf & errNo & ": " & errMsg, vbCritical
End Sub
このコードで安全のためにしていること
| 部分 | していること | 公式リファレンス |
|---|---|---|
Option Explicit | 宣言していない変数があるとエラーにして、打ち間違いを防ぐ | ― |
ReadOnly:=True | 元のファイルを読み取り専用で開く | Workbooks.Open |
UpdateLinks:=0 | 開くときに外部リンクを更新しない(省略すると確認が出ることがある) | Workbooks.Open |
AutomationSecurity | コードで開くファイルのマクロを無効にし、開いた直後に元へ戻す | AutomationSecurity |
SaveChanges:=False | 元のファイルは保存せずに閉じる | ― |
| 新しいシートに出力 | 既存のシートを上書きしない。やり直すときはシートを消すだけ | ― |
On Error GoTo ErrHandler | 途中でエラーが起きても、開いたファイルを閉じ、画面更新などの設定を戻してから止まる | ― |
AutomationSecurity については、Microsoft のリファレンスに「Excel の起動時は、コードで開いたファイルのマクロがすべて有効になる設定になっている」「ファイルを開く直前と直後に設定する」と書かれています。集めるファイルに万が一マクロが入っていても、動かさずに開くための工夫です。
ファイルを順番に取り出す Dir 関数は、最初の1回だけフォルダとパターンを渡し、2回目からは引数なしで呼ぶと次のファイル名を返し、なくなると空の文字列を返します(Dir 関数)。
動かし方
- 集計用.xlsm の標準モジュールにコードを貼り、保存する
- Excel に戻り、[開発] タブの [マクロ] を押す
CollectWorkbooksを選んで [実行] を押す- フォルダを選ぶ画面で、集めたいファイルが入ったフォルダ(最初はテスト用のコピー)を選ぶ
- 「集計_日付_時刻」という新しいシートができ、件数のメッセージが出れば完了
写すのはセルの「値」だけで、数式や書式は写りません。書式もそろえたい、特定の列だけ集めたい、といった変更は、このコードを AI に貼って「ここをこう変えて」と頼むと進めやすくなります。
実行前のバックアップと確認のしかた
マクロで行った変更は、多くの場合 Excel の「元に戻す」(Ctrl+Z)で戻せません。動かす前に、次の順番で確認しましょう。
- コピーでテストする:本物のフォルダではなく、2〜3個のファイルだけを入れたテスト用フォルダを作って試す
- バックアップを取る:集計用.xlsm と元のファイルのフォルダを、日付付きの名前で丸ごとコピーしておく
- 危ない言葉を検索する:編集画面で Ctrl+F を押し、
Kill・Delete・Save・DisplayAlerts・Shellなどを探す(次の章の表を参照) - 1行ずつ動かす:コードの中をクリックして F8 を押すと、1行ずつ実行できる。黄色い行が今から実行される行
- 結果を数で確かめる:元ファイルのデータ行数の合計と、集計シートの行数が合っているかを確認する
- 本番で使う:テストで問題がなければ、本物のフォルダで実行する
Microsoft の入門記事でも、初心者は問題をできるだけ小さな単位に分けて、1つずつ書いて試すことを勧めています。
生成コードで気をつける点
存在しないメソッドや、もっともらしい間違い
AI は、実際には存在しないメソッド(命令)やプロパティ(設定値)を、もっともらしく書くことがあります。動かすと「オブジェクトは、このプロパティまたはメソッドをサポートしていません」といったエラーになります。見慣れない命令が出てきたら、Microsoft Learn の Excel VBA リファレンスで名前を検索し、実在するか、引数の意味が合っているかを確かめましょう。
破壊的な操作が入っていないか
| コードに出てくる言葉 | 何が起きるか | どうするか |
|---|---|---|
Kill | ファイルを削除する。Windows では * などのワイルドカードで複数まとめて消せる(Kill ステートメント) | 頼んでいないなら削除してもらう。必要ならテスト用フォルダで確認 |
.Save / .SaveAs / SaveChanges:=True | 元のファイルを上書き保存する | 読み取り専用で開き、保存せずに閉じる形にする |
.Delete(行・列・シート) | データやシートを消す | 対象の範囲が正しいか、テストで確認する |
Application.DisplayAlerts = False | 「上書きしますか?」などの確認を出さずに進める | 確認なしで上書き・削除が起きないか注意する |
On Error Resume Next(全体にかかっている) | エラーを無視して先へ進むため、失敗に気づけない | 必要な1〜2行だけに限定してもらう |
Shell / CreateObject | 外部のプログラムや部品を動かす | 何を動かすのか説明させ、不要なら外す |
AI に貼ってはいけないもの
- パスワード:ファイルのパスワードや、社内システムのログイン情報はコードにも依頼文にも書かない
- 個人情報・顧客情報:氏名・住所・電話番号・売上の実データなどは貼らず、形だけ同じダミーデータを使う
- 社内の規則:会社で使ってよい AI サービスや、入力してよい情報の範囲が決まっていないか、先に確認する
パスワード付きのファイルを扱うマクロを頼むときも、コードに直接パスワードを書かせないでください。Workbooks.Open はパスワードを省略すると入力を求める動きになるので、実行時に自分で入力する形にできます。
VBScript の廃止予定と VBA への影響
Windows では、VBA とは別のスクリプト言語「VBScript」が段階的に廃止される予定です。Microsoft 365 開発者ブログ「Prepare your VBA projects for VBScript deprecation in Windows」(2025年9月)によると、流れは次のとおりです。
- フェーズ1(現在〜2026年または2027年):VBScript は既定で有効。今の VBA はそのまま動く
- フェーズ2(2026年または2027年ごろ):VBScript が既定で無効になる
- フェーズ3(時期未定):Windows から完全に削除される
VBA 自体がなくなるわけではありません。影響を受けるのは、VBA から .vbs ファイルを呼び出している場合と、正規表現(文字のパターン検索)のために VBScript の部品を参照している場合です。
正規表現については、Windows 版の Office バージョン2508(ビルド 19127.20154)以降、VBA に RegExp が標準で組み込まれ、外部の参照なしで使えるようになりました。AI が書いたコードに CreateObject("VBScript.RegExp") や「Microsoft VBScript Regular Expressions」への参照が出てきたら、将来動かなくなる可能性があることを覚えておきましょう。
Copilot・Python in Excel・Office Scripts・Power Automate との使い分け
Excel の自動化は、VBA だけではありません。2026年9月24日時点の公式ページで確認できた範囲で、それぞれの特徴をまとめます。
| 道具 | ひとことで言うと | 動く場所・条件 | 向いている作業 |
|---|---|---|---|
| VBA | Excel に組み込まれたプログラム | Windows・Mac のデスクトップ版。追加ライセンス不要 | パソコン内のファイルやフォルダをまとめて扱う定型作業 |
| Copilot in Excel | Excel の中で話しかけて、表・グラフ・ピボットテーブル・数式を作ってもらう | 編集・計画・チャットの3つのモードがある。サブスクリプションや組織の設定によっては表示されない | 1冊のブックの中での分析や整形 |
| Python in Excel | セルに Python のコードを書き、Microsoft のクラウドで計算する | 法人向けは Windows(バージョン2408以降)・Mac(16.96以降)・Web。個人向けはプレビュー | ブック内のデータの統計分析やグラフ |
| Office Scripts | TypeScript で書く、クラウド向けのマクロ。操作の記録もできる | Web・Windows(2210以降)・Mac。法人・教育機関向けライセンスが必要(個人向けはプレビュー) | OneDrive・SharePoint 上のブックの定型作業、共有 |
| Power Automate | アプリやサービスをつないで、作業の流れを自動化する | クラウドフローと、Windows で動くデスクトップフローがある | メールを受けたら Excel を更新する、決まった時刻に実行する、など |
公式ページから分かる違いのポイント
- 権限の広さ:VBA マクロは Excel と同じ権限を持ち、パソコン全体にアクセスできます。Office Scripts はブックの中だけにアクセスでき、パソコンには触れません(出典)。
- 自動実行:VBA には Power Automate のコネクタがなく、人が見ている前で実行する前提です。Office Scripts は Power Automate から呼び出して、スケジュールやメール受信をきっかけに動かせます(出典)。
- 既存のマクロを活かす:Power Automate のデスクトップフローには「Excel マクロの実行」というアクションがあり、今ある VBA マクロを流れの一部として呼び出せます(出典)。
- Python in Excel の範囲:Python のコードはパソコンやネットワークにアクセスできず、ブック内の指定したデータだけを扱います(出典)。フォルダ内のファイルを集めるような作業には向きません。
- Office Scripts の制約:Excel レベルのイベント(セルが変わったら動く、など)には対応していません(出典)。
迷ったときの選び方
- 1冊のブックの中で、集計・グラフ・数式を作りたい → Copilot in Excel
- ブック内のデータを統計的に分析したい → Python in Excel
- パソコン内のフォルダにある複数ファイルをまとめて処理したい → VBA
- クラウド上のブックを、決まった時刻やメールをきっかけに自動で更新したい → Office Scripts + Power Automate
- Excel 以外のアプリの操作も含めて自動化したい → Power Automate(デスクトップフロー)
Google スプレッドシートを使っている場合は、VBA ではなく Google Apps Script(GAS)を使います。例として スプレッドシートの予定を Google カレンダーへ登録する自動化 を紹介しています。Word の文書作成を AI に任せたい方は Claude for Word 解説もどうぞ。
よくあるつまずき
| 困りごと | 確認すること |
|---|---|
| 「セキュリティ リスク」のバーが出てマクロが動かない | ネットやメールから取得したファイルです。出どころが確かなら、プロパティの [ブロック解除] にチェックを入れる |
| 保存したらマクロが消えた | .xlsx で保存していないか確認。Excel マクロ有効ブック (*.xlsm) で保存し直す |
| 「変数が定義されていません」と出る | Option Explicit が働いています。変数の打ち間違いか、Dim の書き忘れ |
| 「オブジェクトは、このプロパティまたはメソッドをサポートしていません」 | 存在しない命令を使っている可能性。公式リファレンスで名前を確認し、AI にエラーと行を伝えて直してもらう |
| [開発] タブが見つからない | [ファイル] → [オプション] → [リボンのユーザー設定] で [開発] にチェック |
| 会社のパソコンで設定が変えられない | 管理者のポリシーでマクロが制限されている場合があります。情報システム部門に相談する |
毎回の手順を AI に説明するのが面倒なら、操作を録画して手順書にする Skill Recorder のような道具もあります。
まとめ
- VBA は、デスクトップ版の Excel に組み込まれたプログラムで、パソコン内の複数ファイルをまとめて扱う作業に向いています。
- 開発タブを表示し、マクロ入りのブックは Excel マクロ有効ブック(.xlsm)で保存します。
- Windows 版 Office では、インターネットから取得したファイルのマクロは既定でブロックされます。マクロの設定を「すべて有効」にはしないでください。
- AI には「やりたいこと・環境・データの形・禁止事項」を具体的に伝え、実データやパスワードは貼らないようにします。
- 生成されたコードは、テスト用のコピーとバックアップで試し、Kill・上書き保存・Delete などの破壊的な操作がないかを確認してから使います。
- 1冊のブック内なら Copilot や Python in Excel、クラウドで自動実行するなら Office Scripts と Power Automate、と使い分けましょう。
参考リンク
- Microsoft Learn:Excel VBA リファレンス
- Microsoft Learn:Getting started with VBA in Office
- Microsoft Learn:インターネットからのマクロは既定でブロックされる
- Microsoft サポート:潜在的に危険なマクロがブロックされました
- Microsoft サポート:信頼できる場所の追加、削除、変更
- Microsoft 365 Developer Blog:Prepare your VBA projects for VBScript deprecation in Windows
- Microsoft Learn:Office Scripts と VBA マクロの違い
- Microsoft Learn:Office Scripts のプラットフォームの制限と要件
- Microsoft Learn:Power Automate デスクトップフローの概要
- Microsoft サポート:Copilot in Excel の概要
- Microsoft サポート:Python in Excel の提供状況

