Tôi đã ở đây một thời gian,Tạo bảng tính excel mới qua .Copy() và di chuyển nó đến vị trí cuối cùng
Tôi muốn tạo trang tính mới bằng cách sao chép một trang tính khác. Điều này đặt trang tính mới trước khi trang tính được sao chép. Sau đó tôi muốn di chuyển nó đến cuối của tất cả các tờ.
Mục đích là để có bảng gọi> summary1> summary2> summary3 .. vv theo thứ tự mà
Dưới đây là những gì tôi có (lý do ngắn gọn)
$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))
}
Nó hoạt động cho tấm đầu tiên, nó đổi tên trang tính sau đó di chuyển nó đến cuối nhưng sau đó mọi lúc nó đạt đến phương thức .Move nó không làm bất cứ điều gì ngoại trừ .Activate() bản gốc "Tóm tắt" tờ.
Tôi không biết cách giải thích hành vi này .. Xin cảm ơn trước.
Edit:. Thay đổi $ wb.Worksheets.Item ("Tóm tắt") Di chuyển đến $ wb.Worksheets.Item ($ name) .Move
Edit:
Dưới đây là giải pháp:
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)
}
Chào mừng bạn đến stackoverflow, xin lưu ý rằng bạn có thể trả lời bạn câu hỏi của riêng và không chỉ chỉnh sửa nó (nó thậm chí còn [rất khuyến khích] (http: //meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-those-where-i-knew-the-answer-before-asking)) và chấp nhận nó. Bằng cách này, bạn có thể chia sẻ kiến thức của bạn với cộng đồng và loại * đóng * câu hỏi - cảm ơn cộng đồng. – JMax