2

以下はコードです:

$objWord = New-Object -Com Word.Application

$filename = 'C:\Chicago_NewUser.doc'
$objDocument = $objWord.Documents.Open($filename)

$LETable = $objDocument.Tables.Item(1)
$LETableCols = $LETable.Columns.Count
$LETableRows = $LETable.Rows.Count


Write-output "Starting to write... "

for($r=0; $r -le $LETableRows; $r++) {
    for($c=0; $c -le $LETableCols; $c++) {
        Write-host $r "x" $c
        $content = $LETable.Cell($r,$c).Range.Text
        Write-host $content
    }
}
$objDocument.Close()
$objWord.Quit()

この文書は、2 列 3 行の表を含む 2003 Word 文書です。ただし、印刷された出力は、3行目と1列目のテキストから始まります。

Word 文書は次の場所から入手できます。

https://docs.google.com/document/d/1W0usG4ASsvd3PqQ20l7P8rq0hWBsYlrI0iM1S5ZcumU/edit

4

1 に答える 1

4

インデックスを 1 から開始するだけでうまくいきます。winword を正しく閉じるための行も最後に追加します。

$objWord = New-Object -Com Word.Application

$filename = 'c:\silogix\SILOGIX.doc'
$objDocument = $objWord.Documents.Open($filename)

$LETable = $objDocument.Tables.Item(1)
$LETableCols = $LETable.Columns.Count
$LETableRows = $LETable.Rows.Count


Write-output "Starting to write... "

for($r=1; $r -le $LETableRows; $r++) {
    for($c=1; $c -le $LETableCols; $c++) {
        Write-host $r "x" $c
        $content = $LETable.Cell($r,$c).Range.Text
        Write-host $content
    }
}
$objDocument.Close()
$objWord.Quit()
# Stop Winword Process
$rc = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objWord)
于 2012-07-06T04:06:06.480 に答える