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だけで全部を処理するのは難しくなります。
ただし、こうした業務でも、
人が判断する直前までのデータ整理だけ自動化する
ことはできます。
全部できるか、全部できないかではなく、
どこまでなら決まったルールで処理できるのか
を考える方が現実的です。
1日10分の作業でも年間では大きい
毎日の作業を見ていると、
「10分くらいなら手作業でもいいか」
と思うことがあります。
ですが、月20日作業すると仮定すると、
10分 × 20日 = 200分
です。
さらに1年間続けると、
200分 × 12か月 = 2,400分
になります。
時間にすると、
年間40時間
です。
1日だけを見ると小さな改善でも、年間で見るとかなり大きくなります。
さらに自動化には、時間短縮以外にも、
- コピー&ペーストのミスを減らせる
- 加工する列の間違いを減らせる
- 重複チェックなどの確認漏れを減らせる
- 人によって作業手順が変わるのを防ぎやすい
- 毎回作業手順を思い出す必要がなくなる
といったメリットがあります。
場合によっては、時間短縮よりも、
ミスを減らせることの方が大きな効果
になることもあります。
自動化はVBAだけではない
今回紹介しているのはVBAですが、業務を自動化する方法はVBAだけではありません。
例えば、
- Excel内の定型作業 → VBA
- データ加工 → Power Queryが向く場合もある
- Microsoft 365サービス間の連携 → Power Automate
- kintoneなど → 標準機能やプラグイン
といったように、業務によって向いている方法は変わります。
大切なのは、
「VBAを使うこと」ではなく「面倒な業務をどう減らすか」
だと思います。
VBAはあくまで、そのための選択肢の一つです。
今はAIを使ってVBAを作ることもできる
以前に比べると、VBAを使うハードルもかなり下がったと思います。
今はAIに、
「A列をコピーしてB列へ入れたい」
「対象列の重複をチェックしたい」
「C列の先頭4文字だけD列へ入れたい」
「このExcelから決められた形式のCSVを作りたい」
といった内容を相談すると、VBAコードのたたき台を作ってもらうこともできます。
そのため、
VBAのコードをすべて暗記してから始める
必要は以前より少なくなっています。
ただし、AIが作ったコードが必ず正しく動くとは限りません。
実際の業務ファイルへ適用する前に、
- コピーしたファイルで試す
- バックアップを取る
- 出力結果を確認する
- 想定外のデータでも問題ないか試す
といった確認は必要です。
また、会社の業務でAIを利用する場合は、個人情報や機密情報をそのまま外部AIへ入力しないなど、会社の利用ルールにも注意してください。
まとめ|まずは自分の作業を書き出してみる
VBAで業務を自動化しようと思ったとき、
最初に考えるべきなのは、
「どんなコードを書けばいいのか」
ではないと思っています。
まずは、
普段自分がどんな作業を繰り返しているのか
を書き出してみることです。
そのうえで、
- 毎回同じことをしている
- 手順を順番に説明できる
- コピー&ペーストを繰り返している
- 決まった形式へ加工している
- 毎回同じ確認作業をしている
- 固定フォーマットへ転記している
といった部分がないか探してみます。
全部を自動化する必要はありません。
実際に私が対応した作業でも、7工程ほどあったものを3ステップ程度まで減らせました。
作業の一部分だけでも自動化できれば、それだけでも十分業務改善になります。
今はAIを使ってVBAコードの作成を手伝ってもらうこともできるので、以前より自動化そのもののハードルは下がっています。
まずはコードを書くことからではなく、
「自分は毎日何を繰り返しているのか」
を整理してみるところから始めてみるのがおすすめです。

コメント