Excelマクロ(VBA)を外注する前に|マクロにしない方がよい業務、生成AIで社内で書ける範囲、頼む前に書く仕様
Excelマクロ(VBA)の外注を考える前に決めることは3つです。マクロで動かしてよい業務か、社内で生成AIを使って書ける範囲か、頼む前に書く仕様(入力・出力・例外・動かす環境)か。Microsoftの公式の説明で確かめたことと、見積もりの読み方を整理しました。
目次 クリックで開く
この記事の要点
- 外注の見積もりを取る前に、その業務をマクロで動かしてよいかを確かめます。インターネットから受け取るブック、ブラウザー版のExcel、人がいない時刻の実行、新しいOutlookの操作は、Microsoftの説明で、既定で止まるか、VBAでは動かないものとされています。
- 社内で生成AIを使って書いてよいのは、自分のパソコンで自分が押し、ブックのコピーで試せて、止まっても手作業に戻せる処理までです(当社の整理)。ほかの人が使う、ほかのシステムに書き込む、止まると業務が止まる処理は、頼む側に回します。
- 頼む前に、入力・出力・例外と、動かす環境(Excelの版、ビット数、置き場所、使う人)を1枚に書き、同じ紙で見積もりを取ります。見積もりは、金額より、内訳・範囲外・直す人・ソースコードの扱いを読みます。
外注の前に決める4つのこと(上から順に)
順番と、各段の問いは当社の整理。各段で使った公式の説明は、それぞれの節にリンクがある
この記事は、これから作る・頼むマクロの話。すでにあるマクロの引き継ぎは、別の記事(本文で案内)
Excelマクロ(VBA)の外注を考えると、相場の記事は金額の幅を並べます。ただ、見積もりを取る前に決まっていることがあります。その業務をマクロで動かしてよいか、どこまで社内で生成AIを使って書けるか、頼む側が仕様をどこまで書いたかの3つです。この記事は、この3つを、Microsoftの公式の説明で確かめたことと、当社の整理に分けて書きます。相場の金額は載せません。
先に答えを書きます。1台のWindows版Excelの中で、人がボタンを押して使う業務なら、マクロで足ります。メールで受け取るブック、ブラウザー版のExcel、人がいない時刻の実行、新しいOutlookの操作が入るなら、マクロにする前に、動くかどうかを確かめます。社内で書いてよいのは、止まっても手作業に戻せる範囲までで、それを超えるなら、仕様を1枚に書いて頼みます。
すでにあるマクロを、作った人がいない状態で引き継ぐ場合は、別の問いです。そちらは、作った人がいないExcelマクロの引き継ぎ方にまとめています。業務システムとして、買うか作るかを考える場合は、業務システムは買うか作るかの記事です。この記事は、これから作る、または頼むマクロの話です。
マクロだけでは足りなくなる条件:受け取り方・使う人・データ量・会社の方針
外注の前に、マクロにしてよい業務かを確かめます。次の3つの問いのどれかに「はい」と答えるなら、VBAだけでなく、ほかの手段も見積もりに並べます。
マクロで頼む前に、3つ聞く(当社の整理)
問いは当社の整理。右の説明は、Microsoftの公式ページに書かれていること
受け取るブックは、メールの添付やブラウザーのダウンロード経由か
Windows版Officeは、インターネットから来たファイルのマクロを既定でブロックする
使う人に、ブラウザー版のExcelや新しいOutlookを使う人がいるか
VBAはExcel for the webで実行できない。VBAマクロは、新しいOutlookでサポートされていない
人がいない時刻や、ブックを開かない状態で動かしたいか
VBAにはPower Automateのコネクタがない。Officeスクリプトは、Power Automateで動かせる
出典:インターネットからのマクロの既定ブロック、Excel for the web でのVBAマクロ、新しいOutlookと従来のOutlookの機能比較、OfficeスクリプトとVBAマクロの違い(2026年10月4日確認)
3つの問いのほかに、行数と、会社の方針があります。条件ごとに、Microsoftの説明で確かめられたことと、外注の前に決めることを、次の表に並べました。
| 条件 | Microsoftの説明で確かめられたこと | 外注の前に決めること |
|---|---|---|
| ブックを、メールの添付やブラウザーのダウンロードで受け取る | Windows版のOfficeは、インターネットから取得したファイルのマクロを既定でブロックする。ファイルごとにブロックを解除する手順がある。組織がブロックのポリシーを構成している場合は、この既定の変更の影響を受けない(公式) | ブックの受け渡し方と置き場所。会社のIT管理者に、ポリシーの有無を聞く |
| ブラウザー版のExcelで使いたい | Excel for the web では、VBAマクロを作成・実行・編集できない。マクロを含むブックを開いて編集はでき、マクロはブックに残る(公式) | 使う人全員が、デスクトップ版のExcelを使えるか |
| 人がいない時刻に動かしたい | VBAには Power Automate のコネクタがなく、サポートされるVBAの場面は、マクロの実行に人が加わるものだけ。Officeスクリプトは、Power Automate のフローで、Excelを開かずに動かせる(公式) | 無人の実行が要るなら、VBAとOfficeスクリプトを、見積もりに並べる |
| Outlookでメールを作る・送る | Outlookの機能比較の表で、VBAマクロは、従来のOutlookが「使用可能」、新しいOutlookが「サポートされていません」(公式) | 使うOutlookが、従来か新しいか |
| 行数が多い、または複数人で同時に編集する | 1シートの行数は1,048,576行まで(公式)。共同編集中にマクロを実行するのは問題ないが、マクロやVBAコードを作成・編集するのは、ほかの人がいないときがよいとされている(公式) | 行数の見込みの最大を、仕様に書く。共同編集するブックなら、マクロを直すときの手順 |
| 会社が、マクロを許可しているか | 管理者は、VBAマクロについて、テナントのすべてを許可、許可しない、署名された証明書を持つものだけ許可、の3つから選ぶ。Officeスクリプトは、テナント全体、またはユーザーのグループ単位でオフにできる(公式) | 納品の前に、IT管理者に方針を確かめる。署名付きのみなら、署名の扱いを見積もりに入れる |
表のうち、「ブロックされる」「新しいOutlookで使えない」は、コードに手を入れなくても止まる変化です。同じ種類の変化(64ビット版のOffice、VBScriptの廃止など)の一覧と、見分け方は、引き継ぎの記事に書いています。どの条件にも当てはまらず、1台のWindows版Excelで人が押して使うなら、マクロで頼んでよい、というのが当社の見立てです。
6つの条件のどれに当てはまるかを、業務の流れから整理したいときは、当社の業務ツール開発のページから相談できます。
社内で生成AIを使って書ける範囲:自分のパソコンで、自分が押す処理まで
生成AIにマクロを頼むと、コードは出ます。決める必要があるのは、出てきたコードを、誰が、何で確かめ、どこで動かすかです。Microsoftは、VBAマクロのセキュリティの許可はExcelと同じで、デスクトップへのフル アクセスがあると説明しています(OfficeスクリプトとVBAマクロの違い)。つまり、マクロは、そのパソコンでできることを動かせます。AIが書いたコードも同じなので、読まずに本番のブックで動かさないのが、当社の見立てです。
社内で書くか、頼むか:境目の目安(当社の整理)
上の段ほど社内で完結し、下の段ほど頼む側に寄る。境目は、止まったときの影響で決める
社内で書く自分のパソコンで、自分が押す
ブックのコピーで試せて、止まっても手作業に戻せる。1つのブックの中で、決まった列を整える・並べる・集計する処理
生成AIに頼んで書き、見本のデータで確かめる
社内で書いて、見てもらう数人が使う
毎月の締めの流れに入る、ほかのファイルを読み書きする。書くのは社内、読んで確かめるのは詳しい人
仕様と見本のデータは、社内で書く
頼む止まると業務が止まる
ほかのシステムに書き込む、会社の方針で署名や審査が要る、直せる人が社内にいない
仕様を書いて、見積もりを取る(次の節以降)
段の分け方は当社の整理。公式の根拠があるのは、VBAマクロが「デスクトップへのフル アクセス」を持つこと:OfficeスクリプトとVBAマクロの違い(2026年10月4日確認)
社内で試すときの決まり
- 元のブックのコピーで動かします。マクロを含むブックは、マクロ有効ブック(.xlsm)で保存する必要があります(マクロの保存)。
- 先に、見本のデータと、手で出した正しい結果を作ります。AIのコードを動かして、同じ結果になるかを見ます。この正しい結果は、そのまま、頼むときの仕様に添えられます。
- AIに渡すのは、見本のデータです。顧客や個人の情報は、社内の規程に従い、渡しません。
- 端数の丸め方は、依頼に書きます。VBAの Round 関数は「銀行家の丸め」を返すので、Microsoftは、より予測しやすい結果にはワークシートの Round 関数を使うよう案内しています(Round 関数)。
- エラーが起きたときの動きを、コードで確かめます。On Error Resume Next は、エラーが起きても、次のステートメントから実行を続けます(On Error ステートメント)。途中で失敗しても止まらないことがあるので、結果は、件数と合計で見本と突き合わせます。
Officeスクリプトで書く場合
人がいない時刻に動かしたい、ブラウザー版のExcelで使いたい、という場合は、VBAでなくOfficeスクリプトが候補になります。Officeスクリプトは、アクション レコーダーで操作を記録でき、コード エディターで編集でき、ボタンで実行できます(Excel の Office スクリプト)。Power Automate では、[スクリプトの実行]アクションで呼びます(Power Automate を使用した Office スクリプトの実行)。VBAとの違いは、次の表のとおりです。
| 項目 | VBAマクロ | Officeスクリプト |
|---|---|---|
| 動かせる場所 | Windows版・Mac版のExcel。ブラウザー版(Excel for the web)は不可 | Excel for the web・Windows版・Mac版。Power Automate |
| 必要なライセンス | デスクトップ版のExcelに組み込まれ、特別なライセンスは不要 | エンタープライズまたは教育機関向けのライセンスが必要(対応する Microsoft 365 のライセンスの一覧が公式にある) |
| 届く範囲 | マクロのセキュリティの許可はExcelと同じで、デスクトップへのフル アクセス | ブックにだけアクセスできる。サインイン中のユーザーのトークンは共有されない |
| Power Automate | コネクタなし | [スクリプトの実行]アクションで呼べる。スケジュールや、イベントで動かせる |
| 数の上限 | (この記事では、公式の上限を確かめていない) | Excel for the webのスクリプトは、要求と応答が5MB、範囲が500万セルまで。Power Automateでは、1ユーザー1日1,600回、同期の操作は120秒のタイムアウト、スクリプトからの外部呼び出しは失敗する |
Officeスクリプトは、ブックにだけアクセスできるので、影響の届く範囲が狭い分、社内で試しやすい、というのが当社の見立てです。一方、Excelレベルのイベント(ブックを開いたときなど)には対応せず、スクリプトは、手で起動するか、Power Automate のフローから呼ぶときに動きます(OfficeスクリプトとVBAマクロの違い)。上限と必要なライセンスは、Office スクリプトのプラットフォームの制限のとおりで、管理者がOfficeスクリプトをオフにしている場合は、使えません。
頼む前に書く仕様:入力・出力・例外・動かす環境を1枚に
仕様が1枚あると、見積もりが取りやすくなり、納品を受け取るときの確かめも楽になります。入力・出力・例外は処理の中身、環境は見積もりの前提です。入力と出力には、見本のデータと、手で出した正しい結果を添えます。
仕様に書く4つ(当社の整理)
入力・出力・例外は、処理の中身。環境は、見積もりの前提
1枚目
入力
- どのファイルの、どのシート・どの列か
- 行数の見込みと、最大
- どう受け取るか(メール・共有フォルダーなど)
添える:見本のデータ
2枚目
出力
- 書き出す先(同じブックの別シート・新しいファイル・CSVなど)
- 列の並びと、表示の形式
- 端数の丸め方
添える:手で出した正しい結果
3枚目
例外
- 空欄・重複・想定外の値のとき、止めるか飛ばすか
- ファイルが無い・開けないとき
- 途中で止まったとき、元のデータが壊れないか
書く:例外のときの結果を、1つずつ
4枚目
動かす環境
- Excelの版、WindowsかMacか、32ビットか64ビットか
- ブックの置き場所と、使う人数
- Outlookやほかのファイルへの接続の有無
確かめる:会社のマクロの方針
出典:64ビット VBA の概要、Round 関数、Excelの仕様と制限(2026年10月4日確認)
環境は、見積もりの前提として書きます。Office 2019とMicrosoft 365からは、既定が64ビット版です。64ビット版では、すべてのDeclareステートメントにPtrSafeキーワードが必要で、ポインターやハンドルの変数の型も書き換える必要があるとMicrosoftは説明しています(64ビット VBA の概要)。職場のパソコンに32ビット版と64ビット版が混ざっているなら、それを仕様に書きます。Excelの1シートは1,048,576行までなので(Excelの仕様と制限)、行数の最大の見込みも、書く項目です。
書き出しに迷うときは、生成AIに、今の手作業の手順を貼って、入力・出力・例外に分けて抜けを聞き返してもらう使い方があります(当社の見立て)。出てきた下書きは、実際に作業している人に確かめます。
仕様書1枚の見出しの例
- 目的と頻度:誰が、いつ、月に何回使うか
- 入力:ファイルの置き場所、シート名、列、行数の見込みと最大、見本のデータ
- 出力:書き出す先、列の並び、表示の形式、端数の丸め方、手で出した正しい結果
- 例外:空欄、重複、想定外の値、ファイルが無いとき、途中で止まったとき
- 動かす環境:Excelの版、WindowsかMacか、32ビットか64ビットか、置き場所、使う人数、Outlookの種類、会社のマクロの方針
- 納品と保守:納品物、ソースコードの扱い、不具合の修正の期間、Officeの変更で止まったときの対応
見積もりの読み方:金額より、含まれるものと範囲外
この記事に、相場の金額は載せません。公式の値がなく、相場の記事の数字は、掲載元ごとに条件が違うからです。同じ金額でも、含むものが違えば比べられないので、見積もりに書かれているべきものを挙げます。
| 見積もりの行 | 見る点 | 理由 |
|---|---|---|
| 設計・開発・テストの内訳 | 一式ではなく、工程ごとか。テストに、見本のデータでの突き合わせが含まれるか | 仕様に添えた「正しい結果」と、動かした結果が同じかを確かめるのが、テストの中身になる |
| 前提の環境 | 仕様に書いたExcelの版・ビット数・置き場所が、前提として書かれているか | 64ビット版で動かないコードや、ブロックされるファイルの扱いは、環境で決まる |
| 範囲外 | 例外の扱い、ほかのシステムとの連携、あとから画面を変える作業が、範囲外になっていないか | 範囲外は、あとから別の見積もりになる所 |
| 納品物 | ブックだけか、仕様書と操作の説明も付くか。ソースコードを読めるか | プロジェクトをロックすると、他のユーザーは表示・編集できない |
| 保守 | 不具合の修正の期間、Officeの変更で止まったときの対応と費用、機能を足すときの単価 | 誰が直すかは、見積もりの金額に出ない |
| 署名・ポリシー | 会社が署名付きのマクロだけを許可している場合、署名を誰がどう付けるか | 管理者が、署名付きのみ許可を選べる |
比べるときは、同じ仕様書を、2〜3社に渡して取ります。仕様書が同じなら、見積もりの差は、内訳の行の差として見えます。差が出た行を、相手に聞きます。
見積もりを受け取ったら確かめる3つ(当社の整理)
同じ仕様書を、2〜3社に渡して取るのが前提
金額の差は、含むものの差か
工程ごとの内訳を並べ、仕様書の項目(入力・出力・例外・環境)と1行ずつ対応させる
仕様の環境が、前提に書かれているか
Excelの版・ビット数・置き場所・Outlookの種類が前提と違うと、納品後に動かない可能性がある
ソースコードを、自社で読めるか
VBAには、プロジェクトをロックして、他のユーザーが表示・編集できなくする設定がある
出典:[プロジェクトのプロパティ]ダイアログ ボックス(保護タブ)(2026年10月4日確認)
見積もりの前に、相手に聞くことは、次の4つです。仕様のどの項目が、金額に含まれるか。環境が仕様と違ったとき、誰が、いくらで直すか。納品後に、Officeの変更でマクロが止まったとき、誰が、いくらで直すか。ソースコードは、自社で読めるか。
引き継ぐマクロがある場合はこちらの記事、システムとして買うか作るかを考える場合はこちらの記事があります。ここまでの整理を、実際の業務に当てはめたいときは、Aurant Technologiesの業務ツール開発のページから相談できます。古い仕組みを入れ替える場合は、システム移行のページもあります。
この記事で確かめた範囲と、確かめていないこと
Microsoftの公式ページ(Microsoft Learn・Microsoft サポート)は、2026年10月4日に確かめました。確かめたのは、インターネットからのマクロの既定のブロック、Excel for the web でのVBAマクロ、新しいOutlookと従来のOutlookの機能比較、OfficeスクリプトとVBAマクロの違い、Officeスクリプトの制限とPower Automateでの実行、共同編集のベスト プラクティス、Excelの仕様と制限、マクロの保存、Round 関数、64ビットのVBA、プロジェクトのプロパティ、On Error ステートメントです。
確かめていないのは、生成AIがどの程度のVBAを正しく書けるか、外注先ごとの料金と契約の条件、Mac版のExcelでの挙動です。外注の費用の相場は、販売や仲介のサイトの記事に載っていますが、公式の値ではないので、数字を引用していません。
AI活用支援
Claude・ChatGPT・Gemini・Copilotのどれをどの業務に使うかの見極めから、社内のAIチャット環境、権限と情報の扱いの設計、MCPやAPIでの既存システム連携、研修・伴走までを支援します。
