2013-07-08 1 views
0

나는 powershell을 사용하여 2007 단어를 구문 분석합니다. 각 표의 캡션을 받아서 화면에 인쇄하고 싶습니다.powershell - MS-Word 문서 구문 분석 - 표의 캡션 텍스트 가져 오기

여기에 내가하고 싶은 아이디어가 있지만 인쇄 캡션 줄이 작동하지 않습니다.

$wd = New-Object -ComObject Word.Application 
$wd.Visible = $true 
$doc = $wd.Documents.Open($filename) 
foreach ($table in $doc.Tables) 
{ 
     #print table caption 
     Write-Host $table.Caption.Range.Text #This does not work 

     #Print Table contents 
     foreach ($row in $table.Rows) 
     { 
      Write-Host $row.Range.Text 
     } 
} 

표와 관련된 캡션을 가져올 수 있습니까?

답변

1

캡션은 테이블 개체의 속성이 아니며 텍스트 일뿐입니다. 당신은하지만, 테이블 캡션을 찾기 위해 이런 일을 할 수있는 :

$style = $doc.Styles | ? { $_.NameLocal -eq 'Caption' } 
$wd.Selection.Find.Style = $style 
$wd.Selection.Find.Text = 'Table' # if table captions are labeled "Table" 
$wd.Selection.Find.Execute() 

와일드 카드 일치 Word에서 비 욕심, 당신이 그런 짓을 할 수도 있기 때문에 :

$style = $doc.Styles | ? { $_.NameLocal -eq 'Caption' } 
$wd.Selection.Find.Style = $style 
$wd.Selection.Find.Wrap = 0 
while ($wd.Selection.Find.Execute()) { 
    if ($wd.Selection.Text -like 'Table*') { 
    # do stuff 
    } 
    $wd.Selection.MoveRight() 
} 

위의 일치 단지 스타일에 따라 전체 캡션을 선택해야합니다. MoveRight()은 이후에 캡션을 선택 취소하므로 다음 반복은 문서가 끝날 때까지 검색이 중지 될 때까지 다음 일치 항목을 찾습니다 (.Find.Wrap = 0).

+0

첫 번째 캡션에서 '테이블'텍스트를 선택합니다. 캡션의 모든 텍스트를 가져 와서 모든 캡션을 반복하는 방법은 무엇입니까? 첫 번째 캡션에서 'Table'텍스트를 선택합니다. 캡션의 모든 텍스트를 가져 와서 모든 캡션을 반복하는 방법은 무엇입니까? – Justin