2016-10-22 8 views
0

보내기 : PowerShell은 내가 다음을 수행하는 PowerShell에서 스크립트를 작성하고자하는 주요 엑셀

  1. 가 Excel 통합 문서를 엽니 다.
  2. 두 번 나타나는 대화 상자를 두 번 클릭하십시오.
  3. 매크로를 실행하고 통합 문서를 저장 한 다음 종료합니다.

두 번째 단계에 문제가 있습니다. 내 스크립트에서 Powershell 창으로 입력을 보내면 코드에 두 줄이 추가 된 것을 볼 수 있습니다.

아무도 도와 줄 수 있습니까? 여기 내 코드는 다음과 같습니다.

$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 통합 문서를 집중적으로 처리하고 보내기 키 명령을 실행합니다.