我已經在這個相當長一段時間,通過創建一個.Copy新的Excel工作表(),並將其移動到最後的位置
我想通過複製另一個創建一個新的工作表。這會將新工作表放置在複印工作表之前。然後我想將它移到所有工作表的最後。
目的是有工作表稱爲> summary1> summary2> summary3 ...等的順序
這裏是我有什麼(藉口簡潔)
$ex = New-Object -ComObject Excel.Application
$ex.Visible = $true
$wb = $ex.Workbooks.Add()
for ($i = 1; $i -le 3; $i++)
{
$wb.Worksheets.Item(2).Copy($wb.Worksheets.Item(2))
$newSheet = $wb.Worksheets.Item(2)
$newSheet.Activate()
$name = "Summary$i"
$newSheet.Name = $name
$wb.Worksheets.Item($name).Move($wb.Worksheets.Item($i + 1))
}
它適用於第一板,它重命名工作表,然後將其移動到最後,但每次達到.Move方法後,它都不會執行任何操作,除了激活()原始「摘要」工作表之外。
我不知道如何解釋這種行爲..謝謝友善提前。
編輯:改變$ wb.Worksheets.Item( 「摘要」)移動到$ wb.Worksheets.Item($名).Move
編輯:
這裏是解決方案:
for ($i = 1; $i -le 3; $i++)
{
$wb.Worksheets.Item(2).Copy($wb.Worksheets.Item(2))
$newSheet = $wb.Worksheets.Item(2)
$newSheet.Activate()
$name = "Summary$i"
$newSheet.Name = $name
$lastSheet = $wb.WorkSheets.Item($wb.WorkSheets.Count)
$newSheet.Move([System.Reflection.Missing]::Value, $lastSheet)
}
歡迎計算器,請注意,你可以回答你自己的問題,而不是僅在編輯它(它甚至[強烈推薦](HTTP: //meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-those-where-i-knew-the-answer-before-asking))並接受它。這樣,您可以與社區分享您的知識,並*關閉*問題 - 感謝社區。 – JMax 2012-02-01 11:57:18