我有一個腳本,它將根據它在目錄中找到的文件數創建工作表。從那裏它將表單的名稱更改爲文件名。在這個過程中,我試圖在每張紙上添加兩個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 –