0

所以这是给你的,有点复杂(我认为)。

我有一个文档模板,如下所示: 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 书签“存储”放置在“存储”右侧的大单元格中。

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

当前条目的样子:

当前条目

我希望它看起来像什么:

首选

谢谢!

4

1 回答 1

0

正如评论中所同意的,有一些基于 Word-VBA 的活动文档提示。希望这将有助于向前迈出一步。

在此处输入图像描述

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

在此处输入图像描述

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)
于 2013-07-01T08:30:07.037 回答