2013-06-28 3 views
0

Итак, вот один из них, немного сложный (я думаю).Закладки и ячейки Powershell и Microsoft Word

У меня есть шаблон документа, как показано ниже: word_cells

У меня есть функция хранения и вызова показано ниже: Function (немного уродливый):

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 :. Можно ли запустить шаблон с одной строкой там и добавить больше по мере необходимости из кода?

Что текущая запись выглядит следующим образом:

current_entries

Что я хотел бы, чтобы выглядеть следующим образом:

preferred

Спасибо!

+0

будет какое-то слово -VBA-решение полезно для вас? Я мог бы показать, как это сделать в VBA, и вы попытаетесь преобразовать его в powershell. –

+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) 
+0

Спасибо. Итак, для B, откуда берется переменная wdEndOfRangeRowNumbers?Кроме того, что означает (1) в отношении после таблиц? –

+0

'Таблицы (1)' относится к единственной таблице, в которой сейчас находится ваша закладка. 'Информация (wdEndOfRangeRowNumber)' - это информация о виде документа, которая возвращает некоторые параметры документа, такие как номер строки таблицы, в которой находится ваша закладка. –

+0

Так что я почти там. Есть ли способ получить координаты объекта внутри таблицы? Например, координаты элемента закладки «хранения» в таблице ... –

Смежные вопросы