私が書こうとしている PowerShell スクリプトの目的は、Excel ドキュメントを開いてマクロを実行することです。(マクロは個人用ワークブック ファイルに保存され、personal.xlsb
正常に実行されます)
問題 - Excel ファイルを PowerShell コードで開くと問題なく開きますが、 を呼び出してマクロを実行するとRun("NameOfMacro")
、マクロが見つからないというエラーが表示されます。開いている Excel ファイルでマクロを検索しようとしましたが、マクロ リストに表示されません。これは、personal.xlsb
ファイルがロードされていないことが原因のようです。
そのため、Excel ファイルを閉じて手動で開きましたが、マクロがまだ見つかりません。次に、ファイルを手動で開き、personal.xlsb
マクロが存在することに気付きますが、マクロは、Excel ファイルまたはその後開いた他の Excel ファイルにはまだ表示されません。ファイルの読み込みが突然停止し
た理由を理解しようとしてイライラする時間の後。personal.xlsb
別のことに気付きexcel.exe
ました-PowerShellコードによって(タスクマネージャーウィンドウを介して)開始されたプロセスを強制終了し、Excelドキュメントを開くと、マクロが利用可能になります!!
だから私は問題をこれに絞り込みました - Personal.xlsb
PowerShell経由でExcelファイルを開いたときに開かれていない/ロードされていないため、マクロは利用できません。
なぜこれが起こっているのか、これを解決するために何をする必要があるのか 誰にも分かりますか?
$excel = New-Object -comobject Excel.Application
$FilePath = "D:\DailyReport.xls"
$workbook = $excel.Workbooks.Open($FilePath)
$excel.Visible = $true
$worksheet = $workbook.worksheets.item(1)
$excel.Run("SelectDataFromReport")
私が得るエラー -
"31" 個の引数を指定して "Run" を呼び出し中に例外が発生しました: "マクロ 'SelectDataFromReport' を実行できません。このワークブックでマクロを使用できないか、すべてのマクロが無効になっている可能性があります。"
18行目 char:11 + $excel.Run <<<< ("SelectDataFromReport") + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException
ちなみに、私はデフォルトで 64 ビットの PowerShell コンソールを使用していますが、32 ビットのコンソールでもコードを実行しようとしましたが、違いはありませんでした。Excel では、その場所を信頼できる場所として追加し、Excel ファイルをデフォルトで編集モードで開くことを許可しました。