所以,这是一个适合你的,有点复杂(我认为)。
我有一个文档模板,如下所示:
我有一个存储功能,调用如下所示: 功能(有点难看):
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:。是否可以在那里用一行启动模板,并根据需要从代码添加更多?
目前的条目是什么:
我希望它看起来像:
谢谢!
答案 0 :(得分: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)