VBAとBashで自動化!定型業務を劇的に変えるスクリプト開発入門

はじめに:定型業務の課題とは?
日々の業務の中には、「毎回同じ手順で実行される作業」が少なからず存在しています。これらはいわゆる“定型業務”と呼ばれるもので、多くの現場で共通して抱えている課題です。
私が直近で参画した現場では次のような作業がありました
- Excelファイルからデータを抽出
- 関数で整合性を確認
- Linuxサーバーにアクセスしてシェルスクリプトを実行する
これらの流れは、一見すると単純な作業に見えるかもしれません。しかし実際には、ファイルの数が多かったり、関数が重く動作が遅くなったり、シェル実行の手順が複雑であったりと、地味ながら時間がかかるうえにミスも起こりやすい作業です。
そして何より、「人が手動で行う」ことで発生するヒューマンエラーのリスクを常に抱えることになります。たとえば、コピー先を1行間違える、関数を一部更新し忘れる、実行するシェルを間違える——こうした「うっかりミス」が、後の業務や品質に重大な影響を与えることもあります。
そこで今回は、VBAとBashスクリプトを使った業務自動化の実例をご紹介します。これらのツールは、導入コストが低く、初心者でも比較的扱いやすいため、「とりあえず自動化してみたい」という場合にも最適です。
自動化対象の業務フロー
今回自動化の対象とした業務は、以下のような手順で構成されていました。
- 複数のExcelブックを開き、特定セルの値を取得
- データをメインの集計用Excelブックに貼り付け
- あらかじめ用意した関数でデータの整合性をチェック
- 整合性が確認できたら、LinuxサーバーにSSH接続してシェルスクリプトを実行
この作業は、週次などの頻度で繰り返されており、毎回同じように処理されていました。しかし、以下のような課題も明確に存在していました。
- 開くべきExcelファイルが複数あり、それぞれを開いて手作業でコピーするのは非効率
- 重たい関数や処理のため、操作が遅くなりがち
- シェルの実行にはLinuxサーバーへの接続が必要で、複数のサーバーへの接続が手間
これらを踏まえ、作業効率の向上とミス削減を目的に、自動化スクリプトの導入を決めました。
VBAによる自動化のアプローチ
まず取り組んだのは、Excel業務の自動化です。ExcelにはVBA(Visual Basic for Applications)という自動化機能が備わっており、定型処理の繰り返しに非常に向いています。
目次
✅ VBAで実装した主な機能:
■ 複数ブックのデータ取得と貼り付け
- 予め設定したフォルダ内のExcelファイルを順に開き、対象となるセルのデータを抽出
- それを集計用のExcelに自動的に貼り付け、整った形でデータを集約
■ 関数計算の最適化
- 計算処理の前に画面更新と自動再計算を一時停止することで、処理時間を大幅に短縮
- 関数で行いっていた処理をVBAでの計算に変更することで実行速度を最適化
■ サーバーへの接続とシェル実行の自動化
- Tera TermのTTLマクロ(Tera Term Language)を作成し、必要なコマンドを自動送信
- VBAからこのTTLを呼び出すことで、ボタン一つでサーバー操作が可能に
これにより、マクロを1回実行すれば、すべての処理が流れるように完了するようになりました。
自動化によるメリット
導入後は、以下のような成果が得られました。
作業時間の大幅短縮
従来は30〜40分かかっていた作業が、約5分以内に短縮。しかも人が張り付く必要がないため、空き時間を他の作業にあてられるようになりました。
ヒューマンエラーの防止
人の操作を介さないため、入力ミスやコピペミスといったヒューマンエラーが激減。スクリプトは毎回同じ処理をするため、作業の再現性も担保されます。
業務手順の可視化と簡素化
手順書を見ながら作業していたものが、ボタン1つの操作で完結するように。
作成時の工夫と苦労
ツール作成にあたっては、実際の手順書を何度も読み込み、実務で発生している「抜け」「例外パターン」まで丁寧に拾い上げながら、スクリプトを設計しました。
特に大変だったのは以下の点です:
- ✅ 手作業で行った場合と同じ結果になるかの逐次検証
- ✅ TTLマクロとVBAの連携の検証
- ✅ 重たいExcel関数の再設計と見直しによるパフォーマンス改善
こうした苦労を経た結果、誰が操作してもミスが起きず、効率よく実行できる自動化ツールが完成しました。
おわりに
VBAやBashといった比較的簡易な技術でも、改善できる業務がたくさんあります。そして、こうした一歩一歩の積み重ねが、将来的には組織全体の生産性向上や品質向上につながっていくのではないかと思います。