Powershell和Microsoft Word书签和单元格

时间:2013-06-28 03:03:55

标签: function powershell ms-word word-vba bookmarks

所以,这是一个适合你的,有点复杂(我认为)。

我有一个文档模板,如下所示: word_cells

我有一个存储功能,调用如下所示: 功能(有点难看):

function storage
{
param([string]$CompName)
Get-WmiObject win32_volume -ComputerName $CompName -Filter "DriveType=3 AND Label <> 'System Reserved' AND DriveLetter IS NOT NULL" | Sort-Object DriveLetter | ForEach-Object{"{0}, {1} - {2}gb `n" -f $_.Name,$_.Label,([Math]::Truncate($_.Capacity/1GB))}
}

呼叫:

#Storage input
Write-Host "...writing Storage"
$objRange = $wordDoc.Bookmarks.Item("storage").Range
$objRange.Text = storage -CompName $computer
$wordDoc.Bookmarks.Add("storage",$objRange) | Out-Null

现在看来,一半是有效的。它以正确的格式抽出值,这意味着查询有效,Word中的书签正确,但所有驱动器都放在一个伸展的单元格中。我现在的问题是,我希望每个驱动器都出现在模板中自己的单元格(最大列)中。现在,我有Word书签&#39;存储&#39;放置在“存储”右侧的大单元格中。

有没有办法将每串驱动器系统地放入其自己的单元?这可能吗?此外(如果这是可行的),有没有办法根据代码中的需要自动添加行?假设我有一个这样的服务器,带有C: - G:而另一台服务器只有一个C:和D:。是否可以在那里用一行启动模板,并根据需要从代码添加更多?

目前的条目是什么:

current_entries

我希望它看起来像:

preferred

谢谢!

1 个答案:

答案 0 :(得分:0)

根据评论中的约定,有一些基于Word-VBA的活动文档提示。希望这有助于向前迈进一步。

<强>之前 enter image description here

A)在您storage bookmark is located的单元格下方的单元格中添加信息:

    Sub text_to_cell_below_bookmark()

        ActiveDocument.Bookmarks("storage").Range.Next( _
        wdCell, _
        ActiveDocument.Bookmarks("storage").Range.Tables(1).Columns.Count _
                ).Text = "your storage information in the cell below"
    End Sub

<强>后 enter image description here

B)使用书签在单元格下方添加其他行:

    Sub additional_row_below_bookmark()

    ActiveDocument.Bookmarks("storage").Range.Tables(1).Rows.Add _
        ActiveDocument.Bookmarks("storage").Range.Tables(1).Rows( _
        ActiveDocument.Bookmarks("Storage").Range.Information(wdEndOfRangeRowNumber) + 1)
    End Sub

修改如何获取书签所在表格中的单元格行和列:

Dim bmRow, bmCol
'to get row
bmRow = ActiveDocument.Bookmarks("storage").Range.Information(wdEndOfRangeRowNumber)
'to get column
bmCol = ActiveDocument.Bookmarks("storage").Range.Information(wdEndOfRangeColumnNumber)