2013-05-05 4 views
0

Использование Powershell 2.0 Я пытаюсь скопировать результаты формулы в один рабочий лист на другой. Для этого мне нужно использовать специальную пасту (иначе я получаю ошибку #value). Однако следующий код не работает. Первый блок - это просто обычная паста, которая отлично работает, но второй блок имеет специальную вставку, и она не работает. Ошибка, которую я получаю, ниже.Paste Special с 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 interop assemblysies или Excel.application, которые вы должны посмотреть на них. –

+0

У меня есть это: '$ excel = New-Object -comobject excel.application' в верхней части моего кода – RedRaven

+0

не было бы' $ codepasterange.pastespecial (-4163, $ false) ' – jbockle

ответ

0

Пример:

$Dest = $Excel.Workbooks.Add() 
$Dest.ActiveSheet.Range("B:C").copy() 
$Dest.ActiveSheet.Range("D1").Select() 
$Dest.ActiveSheet.Range("D1").PasteSpecial(-4163) 
Смежные вопросы