2013-05-05 128 views
0

使用Powershell 2.0我试图将公式的结果复制到另一个工作表中。为了做到这一点,我需要使用粘贴特殊(否则我得到#value错误)。 但是,下面的代码不起作用。第一个块只是一个正常的粘贴工作正常,但第二个块有特殊的粘贴,它不起作用。我得到的错误如下。特别粘贴powershell和excel

这个问题有人知道这个错误意味着什么或使用Powershell和Excel做特殊粘贴的最佳方法是什么?

作品:

$worksheet.activate() 
$sessionidcopyrange = $worksheet.Range("J1").EntireColumn 
$sessionidcopyrange.copy() 
$worksheet2.activate() 
$sessionidpasterange =$worksheet2.Range("A1") 
$worksheet2.paste($sessionidpasterange, $false) 

不起作用:

$worksheet.activate() 
$codecopyrange = $worksheet.Range("Q1").EntireColumn 
$codecopyrange.copy() 
$worksheet2.activate() 
$codepasterange = $worksheet2.Range("B1") 
$worksheet2.pastespecial(-4163, $false) 

Exception calling "PasteSpecial" with "2" argument(s): "PasteSpecial method of 
Worksheet class failed" 
At line:33 char:25 
+ $worksheet2.pastespecial <<<< (-4163, $false) 
+ CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
+ FullyQualifiedErrorId : ComMethodTargetInvocation 
+0

我的想法是,你还没有,在你的代码的其他地方使用任何办公室/ excel互操作程序集或Excel.application,你应该看看那些。 – 2013-05-05 20:28:21

+0

我有这样的:'我的代码 – RedRaven 2013-05-05 20:56:31

+0

顶部的'$ excel = New-Object -comobject excel.application'不会是'$ codepasterange.pastespecial(-4163,$ false)' – jbockle 2013-05-06 14:34:53

回答

0

例子:

$Dest = $Excel.Workbooks.Add() 
$Dest.ActiveSheet.Range("B:C").copy() 
$Dest.ActiveSheet.Range("D1").Select() 
$Dest.ActiveSheet.Range("D1").PasteSpecial(-4163)