3

PowerShell V2 Word 2007/2010/2013

テストスクリプトを作成し、Wordテーブルを挿入して、問題なく入力しました。

私がやりたいことがあと2つあります。

テーブルの上に「TablexCitrixServices」というキャプションを追加します。テーブルを右の3つのタブストップに移動します。

サンプルドキュメントはhttps://dl.dropbox.com/u/43555945/StackOverflowSample.docxにあります。

これが私のテストコードです:

$wdSeekPrimaryFooter = 4
$wdAlignPageNumberRight = 2
$wdStory = 6
$wdMove = 0
$wdSeekMainDocument = 0
$wdColorGray15 = 14277081
$wdCaptionPositionAbove = 0

$Word = New-Object -comobject "Word.Application"
$Word.Visible = $True
$word.Templates.LoadBuildingBlocks()
$BuildingBlocks=$word.Templates | Where {$_.name -eq "Built-In Building Blocks.dotx"}
$part=$BuildingBlocks.BuildingBlockEntries.Item("Motion")

$Doc = $Word.Documents.Add()
$Selection = $Word.Selection

$part.Insert($selection.Range,$True) | out-null
$selection.InsertNewPage()

#table of contents
$toc=$BuildingBlocks.BuildingBlockEntries.Item("Automatic Table 2")
$toc.insert($selection.Range,$True) | out-null

#set the footer
[string]$footertext="Report created by Webster"

#get the footer
$doc.ActiveWindow.ActivePane.view.SeekView=$wdSeekPrimaryFooter
#get the footer and format font
$footers=$doc.Sections.Last.Footers
foreach ($footer in $footers) 
{
    if ($footer.exists) 
    {
        $footer.range.Font.name="Calibri"
        $footer.range.Font.size=8
        $footer.range.Font.Italic=$True
        $footer.range.Font.Bold=$True
    }
} #end Foreach

$selection.HeaderFooter.Range.Text=$footerText

#add page numbering
$selection.HeaderFooter.PageNumbers.Add($wdAlignPageNumberRight) | Out-Null

#return focus to main document
$doc.ActiveWindow.ActivePane.view.SeekView=$wdSeekMainDocument

#move to the end of the current document
$selection.EndKey($wdStory,$wdMove) | Out-Null

$services = get-service | where-object {$_.DisplayName -like "*Citrix*"} | sort-object DisplayName

$TableRange = $doc.application.selection.range
$Columns = 2
$Rows = $services.count + 1
$Table = $doc.Tables.Add($TableRange, $Rows, $Columns)
$table.AutoFitBehavior(1)
$table.Style = "Table Grid"
$table.Borders.InsideLineStyle = 1
$table.Borders.OutsideLineStyle = 1
$xRow = 1
$Table.Cell($xRow,1).Shading.BackgroundPatternColor = $wdColorGray15
$Table.Cell($xRow,1).Range.Font.Bold = $True
$Table.Cell($xRow,1).Range.Text = "Display Name"
$Table.Cell($xRow,2).Shading.BackgroundPatternColor = $wdColorGray15
$Table.Cell($xRow,2).Range.Font.Bold = $True
$Table.Cell($xRow,2).Range.Text = "Status"
ForEach($Service in $Services)
{
    $xRow++
    $Table.Cell($xRow,1).Range.Text = $Service.DisplayName
    $Table.Cell($xRow,2).Range.Text = $Service.Status
}
4

1 に答える 1

1

$Selection.InsertCaption(-2, "Citrix Services")行を作成する foreach ループの上にそのコードを配置して、テーブル タイトルを作成するために使用します。
最初の引数はキャプション タイプです。-2 はです。負の整数でアクセスできるその他の組み込みラベルは、図と方程式です。

rows.setleftindent() を使用して、テーブルを目的の位置にインデントします。最初の引数はインデント距離で、2 番目の引数はルーラー スタイルを定義します。テーブルが正しく自動調整されるように、インデントの後に autofitbehavior インスタンスを移動します。

テーブル行を作成する foreach ループの後に、次の行をコードに追加します。

$Table.Rows.SetLeftIndent(200,1)
$table.AutoFitBehavior(1)

お役に立てれば!

于 2013-02-04T20:24:00.483 に答える