自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/VBA/GAS/JavaScript/Raspberry Piなどで色んなことを自動化

パスワード付きExcelのVBAを完全自動実行する方法(PowerShell/PowerAutomateDesktop/VBScript)

業務の効率化を目的に、Excel VBAでの自動化を行っている方は多いと思います。しかし、せっかくVBAマクロを作成しても、定期的に人間がボタンを押して実行しているのでは、自動化の意味が半減してしまいます。

そこで今回は、パスワード付きのExcelファイル内のVBAマクロをPowerShellとタスクスケジューラーを使って完全自動実行する方法をご紹介します。


1. 課題:VBAは作れても自動実行できない

Excel VBAは簡易な自動化手段として有効ですが、以下のような課題があります:

  • Excelファイルにパスワードが設定されている
  • マクロを手動で実行している
  • 定期実行の仕組みがなく人間が介在している

このような状況を打破するには、PowerShellWindowsタスクスケジューラーを活用した仕組み作りが有効です。


2. 解決策:PowerShell + タスクスケジューラー

以下のようなPowerShellスクリプトを用意します。

$excelFilePath = "C:\Path\To\Your\File.xlsm"
$password = "your_excel_password"

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Open($excelFilePath, 0, $false, 5, $password)

# VBAマクロの実行("Module1.MacroName"など)
$excel.Run("YourMacroName")

$workbook.Close($false)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)

これを.ps1ファイルとして保存し、タスクスケジューラーで実行するように設定します。

タスクスケジューラーの設定手順

  1. 「タスクスケジューラー」を開く
  2. 「基本タスクの作成」を選択
  3. トリガーで実行タイミング(例:毎日9時)を設定
  4. 操作で「プログラムの開始」→ powershell.exe を指定
  5. 引数に -ExecutionPolicy Bypass -File "C:\Path\To\Script.ps1" を設定

3. 他の自動実行手段との比較と設定手順

Power Automate Desktop(無料RPAツール)を使う方法

長所:GUI操作も含めた自動化が可能、Microsoft公式、無料

短所:設定に慣れが必要、実行速度が遅めな場合も

設定手順

  1. Power Automate Desktopをインストール
  2. 新しいフローを作成
  3. 「Excelの起動」アクションを追加し、パスワード付きファイルを開く設定
  4. 「マクロの実行」アクションを使って、マクロ名を指定
  5. フローを保存し、Power Automateポータルでスケジュールフローを作成

VBScript(.vbs)で実行する方法

長所:古くからのWindows標準スクリプト

短所:今後のサポートが不透明、セキュリティ警告が出やすい

設定手順

  1. 以下のような.vbsファイルを作成:
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Set objWorkbook = objExcel.Workbooks.Open("C:\Path\To\File.xlsm", , False, , "your_excel_password")
objExcel.Run "YourMacroName"
objWorkbook.Close False
objExcel.Quit
Set objWorkbook = Nothing
Set objExcel = Nothing
  1. タスクスケジューラーで wscript.exe を起動プログラムに指定し、引数で上記スクリプトパスを指定

注意:VBScriptは将来的にWindowsでのサポートが廃止される予定です。Microsoftの発表によると、2027年には完全にサポートが終了する予定です(2024年に非推奨化)。新しいプロジェクトには代替手段を検討することを推奨します。


4. 各手法の比較表

手法 長所 短所
PowerShell+タスク 標準機能のみで実装可、細かい制御も可能 初心者にはやや難解
Power Automate Desktop GUI操作も可能、ノーコードで直感的 設定に慣れが必要、動作が重くなる可能性
VBSスクリプト Windowsとの親和性が高い 2027年にサポート終了予定、使用は非推奨

まとめ

Excel VBAによる自動化は「実行」まで含めて初めて効果を発揮します。PowerShellとタスクスケジューラーを組み合わせれば、パスワード付きExcelファイルであっても定期実行が可能です。

今後は用途やセキュリティ要件に応じて、他の手段との使い分けも検討してみてください。