我有一个脚本,它将根据它在目录中找到的文件数创建工作表。从那里它将表单的名称更改为文件名。在这个过程中,我试图在每张纸上添加两个Column header值“Hostname”和“IP Address”。我可以通过单独激活每张纸来达到此目的,但是由于纸张数量超过20张,这变得相当麻烦,因此我试图找到一种动态的方式来执行此操作,而不管纸张的数量是多少。将相同列标题名称添加到Excel工作簿中的所有工作表
这是我必须做的一切都交给了列标题部分代码:
$WorksheetCount = (Get-ChildItem $Path\Info*.txt).count
$TabNames = Get-ChildItem $Path\Info*.txt
$NewTabNames = Foreach ($file IN $TabNames.Name){$file.Substring(0,$file.Length-4)}
$Break = 0
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$Workbook = $Excel.Workbooks.Add()
$null = $Excel.Worksheets.Add($MissingType, $Excel.Worksheets.Item($Excel.Worksheets.Count),
$WorksheetCount - $Excel.Worksheets.Count, $Excel.Worksheets.Item(1).Type)
1..$WorksheetCount
Start-Sleep -s 1
ForEach ($Name In $NewTabNames){
$Break++
$Excel.Worksheets.Item($Break).Name = $Name
}
我试图插入我的代码,例如:
ForEach ($Name In $NewTabNames){
$Break++
$Excel.Worksheets.Item($Break).Name = $Name
$cells=$Name.Cells
$cells.item(1,1)="Hostname"
$cells.item(1,2)="IP Address"
}
当我尝试运行脚本,我得到以下错误..
您无法调用空值表达式的方法。
然后前进列出我已经把代码中的每一行我想,既然我在操作过程中创建的变量,它是问题:
$cells=$Name.Cells
我想也许如果我在ForEach命令之前移动它,它会解决它,但我仍然会收到同样的问题。我已经通过各种方式来查看通过PowerShell选择excel范围内的工作表,但没有发现任何有用的东西。
希望对此有任何帮助。
'$细胞= $ Name.Cells'是问题,但不是因为你创建一个变量,'$ Name'只是一个字符串,它不”没有'.Cells'属性。 –
感谢您的回复。我已经尝试了多种东西...... $ name,$ NewTabNames,任何可以让我得到我想要的东西的东西。但我仍然得到同样的错误。 – kuroikenshi
自从我和excel一起工作以来,已经有好几年了,但很确定您需要循环使用$ Excel.worksheets –