社内SEが実際にVBAで自動化した業務3選|まずは作業の洗い出しから

IT・仕事

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を加工する」

という一つの作業に見えても、実際には、

  1. サイトからCSVをダウンロードする
  2. CSVをExcelで開く
  3. 必要な列をコピーする
  4. 重複をチェックする
  5. 文字列を加工する
  6. 決められた順番へ並べ替える
  7. 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なども含めて、その作業に合った方法を選ぶのがいいと思います。

タイトルとURLをコピーしました