お疲れ様です、田村です。
私は株の全銘柄を対象としたデータをエクセルで管理しているのですが、データ量が膨大すぎて1つのファイルにすると動作が激重になってしまいます。
そのため、「全体監視用」「個別監視用」「材料・指数・セクター監視用」という3つのファイルに分割して運用していました。
それぞれのファイルには、その日の株価や出来高、決算情報を更新するためのVBAが複数組み込まれています。
今までは各ファイルの中で順番に実行するVBAを組んでいたのですが、ファイル間の転記があったり、全部開いたままだと重かったりと、結局「一度閉じてから次のファイルを開いて実行」といった手動での順番待ちが発生していました。
結果、毎日15分くらいは画面の前で実行完了を待っていなければならない状況……。この「繰り返し感」を打破すべく、今回の最適化に取り組みました。
① Concept:15分の拘束を「ワンポチ」へ
今回のコンセプトは、「マスターエクセルによる全工程の自動制御」です。
ふと思いついたのは、マスターとなるExcelファイルを1つ作り、そこに「どのファイルを開き、どのVBAを実行し、いつ閉じるか」をすべて書き込んで、ボタン一つで完結させること。
これをAI(Gemini)に相談してみたところ、「実用に足る構成です」と力強い助言をもらいました。そこから一気に、AIとの共創による「VIBEコーディング」へと突入しました。
② Process:AIとの共創と「ログ出力」の罠
今回はコードが長くなることが予想されたため、まずは要件定義をしっかりと行いました。その結果、ベースとなるコードは驚くほどすんなりと動いてくれました。
これくらいの規模のコーディングだと、普通はどこかで躓くことが多いのですが、これにはちょっと感動。
しかし、実用化までにはいくつかの「壁」がありました。
- Active依存のコード修正: 各ファイル内の既存VBAが「ActiveWorkbook」や「ActiveSheet」を対象にしていたため、マスターから制御すると処理が戻った際にエラーが多発。これをGeminiに依頼して、すべて明示的な記述へとリファクタリングしてもらいました。
- ポップアップとの戦い: ブックを閉じる際の「個人の情報が~」といった確認ダイアログや、バックアップ機能による停止。これらは処理途中で上書き保存を済ませ、閉じる際には確認が出ないよう制御することで解決しました。
- ログ出力の最適化: 「どこで止まったか」を把握するためにログ機能を実装したのですが、AIの提案通りに作ると、ログに綺麗な罫線を引いたり、細かく処理時間を計算したりと、装飾に凝りすぎて処理自体が激重になるという本末転倒な事態に……。ここは「最適化」の精神で、必要最低限のシンプルなログに削ぎ落としました。
③ Product:情報の自由度が飛躍した
完成したマスターファイルにより、今までの15分間の拘束は「ワンクリックして放置」に変わりました。この「仕組みが動いた瞬間の快感」は、何度味わってもいいものです。
さらに、この「一括制御」が完成したことで、思考は次のステップへ飛躍しました。
「マスター側で各ブックの情報を集約できるなら、それをそのままGAS(Google Apps Script)でスプレッドシートに転記できるのでは?」
これにより、PCを開かずとも出先からスマホで株の最新情報にアクセスできる道筋が見えてきました。
この「クラウド連携編」については、また別の記事で詳しくお話ししたいと思います。
以上よろしくお願いいたします。