
VBAから「Power Automate + Office Script」移行時の課題
VBAマクロを「Power Automate + Office Script」の構成へ移行する際、
コードの書き換え以外にも様々な課題にぶつかりました。
今回は、移行プロジェクトで実際に生じた課題の一部と、その解決案を3つ紹介します。
移行時に発生した課題と対策
課題1:Office Script 単体では別ブックを参照できない
VBAでは Workbooks.Open などで別ファイルを開いてデータを参照・取得できましたが、
Office Scriptはセキュリティやクラウド構造の制約上、自身以外のブックを開いてデータを参照できません。
そのため、「ブックAのデータを取得してブックBへコピーする」といった処理を単体で実行できませんでした。
対応案:Power Automateを経由してデータを引き渡す構成へ変更
複雑さに応じて以下の2パターンを使い分けました。
パターンA(Power Automateで直接取得)
単純な表データであれば、Power Automateの標準アクションで参照先データを直接取得し、そのまま対象スクリプトの引数(パラメータ)として渡すようにしました。
パターンB(スクリプト経由で取得)
複雑な条件抽出や大量データの加工が必要な場合は、参照先ファイルで「データ抽出用のスクリプトA」を実行して結果を取得し、対象スクリプトの引数として渡すようにしました。
課題2:Power Automate(クラウド)からローカルファイルが触れない
クラウド上の自動化フローからは、PCのCドライブや社内LAN共有フォルダのファイルを直接開いたり移動したりできませんでした。
対応案:ファイルの置き場所自体をSharePoint/OneDrive(クラウド)管理へ移行
ファイルの受け取りや保管場所をクラウドに一元化することで、ローカル操作そのものを不要にしました。
課題3:VBA特有の機能が使えない
VBAで作成していた「入力用画面(UserForm)」や、ローカルPCのファイルを画面上で選ばせる「ファイル選択ダイアログ」はOffice Scriptでは再現できませんでした。
対応案:入力と選択の仕組みをクラウド用に再設計
入力用画面
Power Automateのトリガーでパラメータを受け取る仕組みへ変更しました。
ファイル選択ダイアログ
あらかじめSharePoint/OneDrive上の指定フォルダーにファイルを配置し、選択・指定して実行するフローへ変更しました。
おわりに
様々な制約への対処が必要になる一方で、クラウド構成へ移行したことでVBAでは実現できなかったメリットを得ることができました。
例えば毎回行っている定期作業などについて「PCを起動しなくても、指定した時間に自動実行させる」ことや、メールの内容を振り分ける作業については「メール受信をトリガーとして自動実行させる」など、今まで手動実行していた箇所を自動化させることができます。
業務効率も繋がるため一度検討してみてはいかがでしょうか。