VBAというと、
「Excelの作業を自動化できるもの」
というイメージはあっても、実際の仕事で何に使えばいいのか分からない方も多いと思います。
私自身、社内SEとして業務をしている中で、VBAを使っていくつかの定型作業を自動化してきました。
実際に使ってみて感じるのは、VBAのコードを覚えること以上に、
「普段やっている作業の中から、自動化できそうな部分を見つけること」
が重要だということです。
今回は、私が実際にVBAを使って自動化してきた業務を例に、どんな作業がVBAに向いているのか、逆にどんな作業は向いていないのかを紹介します。
実際にVBAで自動化した業務
私が実際にVBAを使った業務では、大きく分けると次のような作業がありました。
- CSVファイルを読み込んで加工する
- 決められたExcelフォーマットへデータを反映する
- Excelデータを決められたCSV形式へ変換する
どれも共通しているのは、毎回ほぼ同じ手順で処理していた作業です。
1.CSVファイルを読み込んで加工する
仕事では、Webサイトや各種システムからCSVデータをダウンロードし、その後Excelで加工するケースがあります。
例えば、
- Web注文データ
- サイトから出力した連携データ
- 業務システムから取得したCSV
などです。
CSVをダウンロードしたあとに、
- 必要な列をコピーする
- 対象列の重複をチェックする
- 指定した文字数で文字列を切り出す
- 特定の文字を検索する
- 不要な列を削除する
- 列を決められた順番へ並べ替える
といった作業を毎回行っている場合、VBAとの相性はかなり良いです。
私が実際に対応したものでも、もともと7工程ほどあった作業を、VBAを使って3ステップ程度まで減らせたケースがありました。
例えば、以前は、
CSVをダウンロード
→ Excelで開く
→ 必要な列をコピー
→ 重複を確認
→ 文字列を加工
→ 列を並べ替える
→ CSVとして保存
というような作業を行っていました。
これをVBAで処理することで、
CSVをダウンロード
→ VBAを実行
→ 加工済みファイルを確認・出力
くらいまで作業を減らすことができます。
1回だけなら数分の作業でも、毎日・毎週繰り返すとなると大きな差になります。
また、時間短縮だけでなく、
「重複チェックを忘れた」
「違う列をコピーした」
「切り出す文字数を間違えた」
といった手作業によるミスを減らせるのもメリットです。
2.決められたExcelフォーマットへデータを埋め込む
取得したデータを、決められたExcelの書式へ転記する作業にもVBAを使えます。
例えば、
在庫報告など、報告様式があらかじめ決まっている帳票
です。
元データから必要な情報を取得し、
- 商品コード
- 商品名
- 在庫数
- 日付
- 拠点情報
などを、決められた場所へ反映します。
報告書の書式が毎回同じであれば、
「このデータを、このセルへ入れる」
というルールを作りやすいため、VBAで自動化しやすいです。
手作業の場合、
元データを確認
→ 必要な値を探す
→ 報告書へコピー
→ 次の項目を探す
→ 再びコピー
といった作業になります。
これをVBAで処理できれば、
元データを読み込む
→ 必要な情報を取得
→ 決められた帳票へ自動反映
という流れにできます。
kintoneなどで収集したデータを、決められたExcelフォーマットへ反映するような使い方もできます。
ただし、kintoneなどのサービスでは、標準機能やプラグイン、外部連携サービスを使った方が便利な場合もあります。
費用をかけられるのであれば、
「VBAで作る」以外の方法も一度調べてみる
のがおすすめです。
VBAでできるからといって、必ずVBAを使う必要はありません。
3.Excelのデータを決められたCSV形式へ変換する
逆に、Excelで管理しているデータを、別のシステムへ取り込むためのCSVへ変換することもあります。
システム側で、
「1列目にはこの値」
「2列目にはこの情報」
「この順番でCSVを作る」
など、取込形式が決められているケースです。
毎回、
Excelから必要な列をコピー
→ 順番を変更
→ 不要な情報を削除
→ CSVとして保存
という作業をしているのであれば、これもVBAで自動化できます。
例えば、
Excelで元データを管理
↓
VBAを実行
↓
必要な列を取得
↓
取込形式に合わせて並び替え
↓
CSVを出力
という形です。
毎回同じ形式に整える作業であれば、人が一つずつコピー&ペーストする必要はありません。
こういった、
「元データの形式がある程度決まっている」
「完成形も決まっている」
という作業は、自動化しやすいと感じています。
VBAで重要なのは「業務の洗い出し」
VBAで業務を自動化するとき、個人的に一番重要だと思うのが、
自分が普段やっている作業を一度洗い出してみること
です。
例えば、
「CSVを加工する」
という一つの作業に見えても、実際には、
- サイトからCSVをダウンロードする
- CSVをExcelで開く
- 必要な列をコピーする
- 重複をチェックする
- 文字列を加工する
- 決められた順番へ並べ替える
- CSVとして保存する
というように、複数の工程に分けることができます。
ここで大事なのは、
全部を自動化しようとしなくてもいい
ということです。
例えば、
CSVをダウンロードするところまでは人が行う
けれど、
そこから先の加工だけをVBAに任せる
という形でも十分です。
実際に私が対応した作業でも、7工程ほどあったものを3ステップ程度まで減らせたケースがあります。
一部分だけでも自動化できれば、それだけで業務改善になります。

VBAに向いている作業
私が実際に使ってきた中では、VBAに向いているのは、
ある程度パターン化できる作業
だと思っています。
例えば、
- 決まった列をコピーする
- 同じ条件で重複を確認する
- 文字列を一定の文字数で切り出す
- 特定の文字を検索する
- 毎回同じ列を削除する
- 決められた順番へ並べ替える
- 固定された帳票へ転記する
- 決められた形式のCSVを作る
といった作業です。
もっと簡単に言うと、
「自分がやっている作業を順番に説明できるか」
が一つの判断基準だと思います。
例えば、
「まずA列をコピーする」
「次に重複を確認する」
「その後、C列の先頭4文字をD列へ入れる」
というように、手順を順番に説明できるのであれば、VBAで処理できる可能性があります。
VBAに向いていない作業
逆に、VBAだけで完全に自動化するのが難しい作業もあります。
例えば、
- 毎回人の判断が必要
- ケースごとに対応方法が大きく変わる
- 数値を変更する基準が決まっていない
- 例外が非常に多い
- 元データの形式が毎回違う
といった作業です。
特に、
「そのときの状況を見て判断する」
という工程が多い場合は、単純にVBAだけで全部を処理するのは難しくなります。
ただし、こうした業務でも、
人が判断する直前までのデータ整理だけ自動化する
ことはできます。
全部できるか、全部できないかではなく、
どこまでなら決まったルールで処理できるのか
を考える方が現実的です。
自動化はVBAだけではない
今回紹介しているのはVBAですが、業務を自動化する方法はVBAだけではありません。
例えば、
- Excel内の定型作業 → VBA
- データ加工 → Power Queryが向く場合もある
- Microsoft 365サービス間の連携 → Power Automate
- kintoneなど → 標準機能やプラグイン
といったように、業務によって向いている方法は変わります。
大切なのは、
「VBAを使うこと」ではなく「面倒な業務をどう減らすか」
だと思います。
VBAはあくまで、そのための選択肢の一つです。
今はAIを使ってVBAを作ることもできる
以前はVBAを使おうと思うと、自分でコードを調べながら作る必要がありました。
今はChatGPTなどのAIに、
「このExcelのデータを別シートへ転記したい」
「CSVを読み込んで必要な列だけ加工したい」
といったやりたいことを伝えて、VBAコードの作成を手伝ってもらうこともできます。
私自身も、分からない部分をAIに聞きながらコードを作ることがあります。
ただし、AIが作ったコードが必ず正しいとは限りません。特に仕事で使う場合は、いきなり本番データで実行せず、テスト用のデータで意図した動きになるか確認してから使うようにしています。
VBAをすべて覚えてから始める必要はなくなってきましたが、最終的に正しく動くかを確認するのは自分自身です。
また、会社の業務でAIを利用する場合は、個人情報や機密情報をそのまま外部AIへ入力しないなど、会社の利用ルールにも注意してください。
まとめ|コードを書く前に、まず作業を分解してみる
私が実際にVBAで自動化してきたのは、CSVの加工やExcelへの転記など、毎回ほぼ同じ手順を繰り返していた作業です。
実際に7工程ほどあった作業を3ステップ程度まで減らせたケースもあり、すべてを自動化しなくても、一部分をVBAに任せるだけでかなり楽になることがあります。
私自身、VBAで業務を効率化するときに大切だと感じているのは、いきなりコードを書くことではなく、「普段の作業を一つずつ分解して、どこなら自動化できそうか考えること」です。
VBAだけにこだわらず、Power AutomateやPower Queryなども含めて、その作業に合った方法を選ぶのがいいと思います。

