冻结工作表的顶部行

5

这段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

更新

重复帖子中的解决方案无效,即:

$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

你正在使用哪个版本的MS Excel?我想“冻结顶行”功能只在Excel 2007及以后的版本中才有。 - Our Man in Bananas
@OurManInBananas 我正在尝试那个解决方案,但它不起作用.....使用的是Excel 2007。 - Glowie
1
请查看[http://www.ozgrid.com/forum/showthread.php?t=19692]。 - Our Man in Bananas
3个回答

10
为了冻结顶部行,您需要选择第行。
$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()

0
$excel.Application.ActiveWindow.SplitRow = 1
$excel.Application.ActiveWindow.FreezePanes = $true

2
你应该对你的答案进行一些解释。 - Mikev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接