我有一个循环遍历工作簿的脚本,并将所有选项卡复制到新工作簿。但是出于某种原因,始终会跳过第一个标签。
for ($i=1; $i -lt $myworkbook.Worksheets.Count; $i++) {
... other code
$SheetToCopy = $source.Worksheets.Items($i)
$sheetToCopy.Copy($target)
}
$i
设置为0,但是powershell会抱怨零无效。$workbook.sheets.item
和$workbook.worksheets.item
,但他们似乎做同样的事情有人能说清楚这里发生了什么吗?
工作簿永远不会有相同的命名选项卡,因此我使用的是索引而不是名称。
答案 0 :(得分:2)
从您发布的代码看起来它可能正在跳过最后一张而不是第一张。它应该是
(int i = 1; i <= worksheets.Count; i++) // roughly translated from C#
当你在那里有<
个符号(而不是<=
),并且因为你使用的是非零的索引,当它到达最后一个工作表时i
将是相等的到worksheets.Count
,因此要跳过它,因为要求它小于worksheets.Count