2015-05-20 3 views
2

Код PowerShell создает Excel.Закрепить верхний ряд листа

Я пытаюсь заморозить верхний ряд:

$excel = New-Object -Com Excel.Application 
$excel.Visible = $True 
$wb = $Excel.Workbooks.Add() 
$ws = $wb.Worksheets.Add() 

$ws.Activate() 
$ws.Select() 

$excel.Rows.Item("1:1").Select() 
$excel.ActiveWindow.FreezePanes = $true 

Вместо замораживания верхнего ряда, она замерзает центр строк и центра столбцов, т.е.

enter image description here

UPDATE

Решение в двух экземплярах icate пост не работает, т.е.

$excel.Rows("1:1").Select() 
$excel.ActiveWindow.FreezePanes = $true 

дает следующее сообщение об ошибке:

Method invocation failed because [System.__ComObject] does not contain a method named 'Rows'. 
At D:\Script\upgrades.ps1:231 char:5 
+  $excel.Rows("1:1").Select() 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (Rows:String) [], RuntimeException 
    + FullyQualifiedErrorId : MethodNotFound 
+0

Какую версию MS Excel вы создаете? * Freeze top row * появился только с Excel 2007, я думаю ... –

+0

Возможный дубликат [Как я могу программно заморозить верхнюю строку листа Excel в Excel 2007 VBA?] (Http://stackoverflow.com/questions/ 3232920/how-can-i-programatically-freeze-the-top-row-of-a-excel-worksheet-in-excel-200) –

+0

см. [SO: 3232920 как-можно-программно-замораживать- топ-строк из-в-Excel-лист] (http://stackoverflow.com/questions/3232920/how-can-i-programmatically-freeze-the-top-row-of-an-excel-worksheet-in -excel-200) –

ответ

6

Чтобы заморозить верхнюю строку, которую нужно выбрать второй строку:

$excel.Rows.Item("2:2").Select() 
$excel.ActiveWindow.FreezePanes = $true 
1

Если вы имеют несколько листов и нуждаются в замораживании верхнего ряда каждого листа:

$colSheets = ($Sheet1, $Sheet2, $Sheet3, $Sheet4, $Sheet5) 

foreach ($page in $colSheets){ 
    $page.Select() 
    $page.application.activewindow.splitcolumn = 0 
    $page.application.activewindow.splitrow = 1 
    $page.application.activewindow.freezepanes = $true 
} 
#After you are done, re-select first sheet (optional) 
$Sheet1.Select() 
Смежные вопросы