2017-04-04 13 views
1

可変長のスプレッドシートへのリンクをPowerShell経由で追加しようとしていますが、どのように行ってもエラーに遭遇しています。プログラムでExcelスプレッドシートへのリンクを追加

$v = 2 
foreach($i in $list){ 
    $r = "A"+$v 
    $link = "www.url.com" 
    $sheet.Hyperlinks.Add($r,$link) 
    $v++ 
} 

次のエラーを投げ続ける:これは私が現在の$ excel.activeworkbook.activesheetを表す$シートで、Excelのcomobject内にネストされ、仕事をしようとしていたループである

Exception setting "Add": Cannot convert the "A2" value of type "string" to type "Object". 
At C:\hyperlink_wip.ps1:31 char:5 
+  $sheet.Hyperlinks.Add($r,$link) 
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodException 
    + FullyQualifiedErrorId : RuntimeException 

この例では、$ listはこのスプレッドシートの1つの列の情報を含むリストであり、常にスプレッドシート自体と同じ長さになります。スプレッドシートにもヘッダー行があるため、ハイパーリンクするセルはA2から始まります。私はまた、Excelのスプレッドシートへのリンクを追加するためのhereの方法を試しましたが、試したときに間違ったフォーマットエラーが発生しました。

+2

'$のr'は[' Range'](https://msdn.microsoft.com/ではありませんen-us/library/office/ff838238.aspx)または「シェイプ」。ここでは、[Add Method on MSDN](https://msdn.microsoft.com/en-us/library/office/ff822490.aspx) – BenH

+0

@BenH、あなたは正しいです。 $ rを$ sheet.range( "A" + $ v)に変更すると、問題が修正されました。 – Cameron

+0

@BenH、回答としてあなたのコメントを投稿するなら、私はそれを受け入れます。 – Cameron

答えて

2

$rは、RangeまたはShapeではありません。ここでAdd Method on MSDN

だここでは、あなたのコード内でそれを使用することができる方法の例です:

$v = 2 
foreach($i in $list){ 
    $r = $sheet.range("A"+$v) 
    $link = "www.url.com" 
    $sheet.Hyperlinks.Add($r,$link) 
    $v++ 
} 
関連する問題