【发布时间】:2019-04-07 03:36:21
【问题描述】:
您好,我有一个 Powershell 脚本,它曾经可以在我的 excel 电子表格中正常运行,但现在似乎出现故障,我无法解决问题。
精简版的代码是这样的
$pastecounter= 2
$intRowCount = $WS1.usedRange.Rows.Count
for($i=6; $i -le $intRowCount; $i++)
{
$startRow = $i
<A lot of work being done to each row>
$WS1.Range("A"+$startRow+":H"+$startRow).Copy()
$WS2.Range("A"+$pastecounter+":H"+$pastecounter).Pastespecial()
$pastecounter++
$i=$j-1
}
这会迭代我的行,工作并逐行粘贴到新工作表中,并用于工作。
我今天开始运行它,一旦它到达我的数据的最后一行,它就会开始无限粘贴最后一行。
我已经回显了所有正确输出的变量,直到最后一行,我尝试添加一个 Break,但在 for 循环内粘贴一行后它会中断,而在 for 循环外它不能解决问题。
现在我唯一能想到的是它可能是 Excel 电子表格的问题。但是我删除了所有空行,并且在没有帮助的情况下清除了 Excel 中的格式。
这里有任何可能知道一些故障排除的 Excel 或 Powershell 专家吗?
谢谢!
【问题讨论】:
-
在 ISE 或 VSCode 调试器中逐步执行您的代码。可能不要在循环中更改 $i 。
$i=$j-1 -
为什么要逐行粘贴?将数据读入 PowerShell,进行操作,然后
[object[]]$Data | ConvertTo-Csv -Del "`t" | Clip并粘贴到目标的第一个单元格中。但是,是的,在For循环中修改$i可能是您现有代码的问题。 -
@KoryGill 谢谢你,这条评论让我找到了正确的方向。代码已更改为从 J 循环中删除了复制粘贴功能,因此 $i 不再 = $j-1 而是等于 $endrow。感谢您指出正确的方向!
标签: excel powershell powershell-3.0 powershell-4.0