2017-01-07 4 views
0

Powershell을 사용하여 Word 문서의 헤더 (.docx) 안에있는 텍스트 상자 내에서 일부 텍스트를 찾고 바꾸려고합니다. 머리글 외부 텍스트는 사용할 수 있지만 내부는 사용할 수 없습니다. 텍스트 상자의 내용에 올바르게 액세스하지 못해서 실패한 것 같아요. 그래서 마지막 줄에 (텍스트를 저장하고 종료하기 전에) 텍스트를 보았지만, 세 줄의 각 항목에 대해 빈 칸을 인쇄했습니다. 머리글.Powershell을 사용하여 Word의 헤더에있는 텍스트 상자에서 찾기 및 바꾸기

$word = New-Object -COM "Word.Application"; 
$word.Visible = $false; 
$doc = $word.Documents.Open($FullPath); 
$selection = $word.Selection; 
$section = $doc.sections.item(1); 
$header = $section.headers.Item(3); 
$FindText = "Cnnn"; 
$MatchCase = $False; 
$MatchWholeWord = $False; 
$MatchWildcards = $False; 
$MatchSoundsLike = $False; 
$MatchAllWordForms = $False; 
$Forward = $True; 
$wdFindContinue = 1; 
$Wrap = $wdFindContinue; 
$Format = $False; 
$wdReplaceNone = 0; 
$ReplaceAll = 2; 
$ReplaceWith = "C" + $newString; 
$a = $header.Find.Execute($FindText,$MatchCase,$MatchWholeWord, ` 
$MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,` 
$Wrap,$Format,$ReplaceWith, $ReplaceAll); 

Write-Host ("Header is: " + $header.Text); 

$doc.Save(); 
$word.Quit(); 
+0

왜'$ section.headers.Item (3)'입니까? 'Item (1) '이되어서는 안됩니까? 찾고있는 헤더는 어떤 페이지입니까? –

+0

안녕하세요, @Mathias 죄송합니다. 예. 페이지 1에 있습니다. 실제로 모든 페이지가 실제로 다른 것을 시도하고있었습니다. 항목 (1)이있을 때 헤더 텍스트를 슬래시로 인쇄했습니다. "/" – mJ222398

답변

0
: 스크립트의

관련 조각은 다음과 같습니다 ...이 PowerShell을 사용하여 내 처음이고, 나는 아마도 더 많은 시간이 학습하고 그것을 사용하여 저장됩니다보다는 그것을 기록을 보냈습니다 생각

개체에 TextBox 또는 shape 텍스트가 포함 된 검색을 적용해야합니다. 다음과 같이 시도해 볼 수 있습니다.

If ($header.ShapeRange.Count) { 
    ForEach ($shp in $header.ShapeRange) { 
    If ($shp.TextFrame.HasText) { 
     $obj = $shp.TextFrame.TextRange.Find 
     $a = $obj.Execute($FindText,$MatchCase,$MatchWholeWord,` 
      $MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,` 
      $Wrap,$Format,$ReplaceWith,$ReplaceAll) 
    } 
    } 
}