gpt4 book ai didi

excel - 通过 .Copy() 创建一个新的 Excel 工作表并将其 move 到最后一个位置

转载 作者:行者123 更新时间:2023-12-01 23:28:35 27 4
gpt4 key购买 nike

我从事这个工作已经有一段时间了,

我想通过复制另一个工作表来创建一个新工作表。这会将新工作表放置在正在复制的工作表之前。然后我想将它 move 到所有工作表的最后。

目标是按顺序将工作表称为 > 摘要 1 > 摘要 2 > 摘要 3 .. 等

这是我所拥有的(请原谅简洁)

$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 到末尾,但此后每次到达 .Move 方法时,除了 .Activate() 原始“摘要”工作表外,它不会执行任何操作。

我不知道如何解释这种行为。提前谢谢您。

编辑:已更改 $wb.Worksheets.Item("Summary").Move 至 $wb.Worksheets.Item($name).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)
}

最佳答案

标记为社区,因为它来自上述问题。

Here is the solution:

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)
}

关于excel - 通过 .Copy() 创建一个新的 Excel 工作表并将其 move 到最后一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9094295/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com