2016-10-22 18 views
0

を送信し、私は次のことを行いPowerShellでスクリプトを記述したいと思います:PowerShellはキーエクセル

  1. は、Excelワークブックを開きます。
  2. 表示される2つのダイアログボックスに2回クリックします。
  3. マクロを実行し、ブックを保存して終了します。

2番目の手順に問題があります。私のスクリプトでは、Powershellウィンドウにenterが送信され、コードに2行追加されています。

誰でもお手伝いできますか?ここに私のコードです:

$p1 = "C:\" 
$eo = new-object -comobject excel.application; 
$eoc = dir $p1 -Include *.xlsm -Recurse    
Foreach ($f1 in $eoc) 
{ 
    $wb = $eo.workbooks.open($f1.fullname) 
    while (!$eo.Ready){sleep 0.1} 
    $eo.Application.SendKeys('~') 
    while (!$eo.Ready){sleep 0.1} 
    $eo.Application.SendKeys('~'); 
    $eo.Run("macro_name"); 
    $eo.Application.CalculateFull; 
    while (!$eo.Ready){sleep 0.1}; 
    $wb.save(); $wb.close() 
} 
$eo.quit() 
+0

通常、Sendkeys()はフォーカスやタイミングのために失敗します。 _AppActivate Method_のGoogle – JosefZ

答えて

0

このようなものが必要です。

$wshell = New-Object -ComObject wscript.shell; 

$wshell.AppActivate('window name of your excel file') | Out-Null 

これは、Excelワークブックに焦点を合わせ、送信キーコマンドを実行します。