Power Automate Desktop:Access VBAの実行方法「アプリケーションの実行」(マクロ経由)
- Power Automateのフローの途中で、現在使っているAccessのVBAをそのまま使いたい。
- Power AutomateのアクションにExcelのマクロ実行はあるのに、Accessはないのでどうにか使えないか?
その際に以下の方法でVBAを実行できるようになったので、その方法を記事にしておきます。
◆AccessVBAの実行方法
結論から言うと、VBAを直接は実行できませんが、「アプリケーションの実行」というアクションでAccessマクロを呼び出す方法で実行することができました。
(0)事前準備・マクロの作成
以下のAccessのVBAを実行するため、Power Automateから呼び出せる「マクロ」を作成します。
VBAの内容としては、CSVファイルを「サンプル1」テーブルにインポートするものです。
1 2 3 4 5 6 7 8 9 |
Function getCSV() Dim FilePath As String FilePath = "C:\Users\・・・・\xxxx.csv" '//ヘッダー情報のあるCSVの取込み方法' '「サンプル1」テーブルに、FilePathのCSVを取り込む' DoCmd.TransferText acImportDelim, , "サンプル1", FilePath, True '//Trueはヘッダーありとして読み込む' End Function |
■このVBAを呼び出すマクロを以下のように作って保存します。
これらの事前準備が終わったら、このマクロをPower Automateで実行できるようにしていきます。
(1)アクションの追加
「アプリケーションの実行」をドラッグ&ドロップします。
場所:「アクション」⇒「システム」⇒「アプリケーションの実行」
(2)各種パラメーターの選択
「パラメーターの選択」画面が開くので、それぞれの設定を行います。
設定が終わったら、「保存」を押します。
なお、以下ではダブルクォーテーションで囲っていますが、あってもなくても動作します。
アプリケーションパス | 実行したいAccessのパスをファイル名まで入れて書きます。 |
コマンドライン引数 | ここではマクロを呼び出すようにしています。Accessでは「/x」のスイッチでマクロを呼び出せます。なおWordやパワポではスイッチが異なります。(※1) |
アプリケーション起動後 | 重いと起動が遅い場合があるので念のため設定しました。 |
タイムアウト | 念のため設定しました。 |
(3)フロー画面の確認
フロー画面にアクションが追加されているのが確認できます。
◆Accessを終了する処理
(1)「プロセスの終了」の追加
「プロセスの終了」をドラッグ&ドロップします。
「アクション」⇒「システム」⇒「プロセスの終了」
(2)「プロセスの終了」の設定
「プロセスの終了」画面が開くので設定をして「保存」します。
「プロセスの指定方法」は「プロセスID」にします。
「プロセスID」は「アプリケーションの実行」を作成したときに作られた「プロセスID」を選択します。
「{X}」ボタンを押すとこのフローで使えるものが表示されます。
(3)フロー画面の確認
フロー画面にアクションが追加されているのを確認します。
(4)動作確認
フロー画面の上にある以下の実行ボタンをクリックして、実行できるか確認をします。