2016-08-09 211 views
1

2つのワークブックの間にExcelの範囲をコピー&ペーストしようとしていますが、コピー機能が意図したとおりに機能しません。 次のコードスニペットを確認してください。powershellのワークブック間にExcelの範囲をコピー&ペーストする

$worksheetCSV.activate() 
$range1=$worksheetCSV.Range("a","h") 
$worksheetCSV.copy($range1) 

$worksheetXLS.activate() 
$lastRow = $worksheetXLS.UsedRange.rows.count + 1 
$range2=$worksheetXLS.Range("A" + $lastrow) 
$worksheetXLS.Paste($range2) 

このコードはほぼ動作しますが貼付されている唯一の細胞である:

$worksheetXLS.Paste($range2) 

は、私は範囲の実際の内容を貼り付けるコピーすることができますどのような方法があります。

+0

ソースシートとターゲットシートの例を提示できますか?また、結合された結果はどのように見えますか?コードからCSVファイルを開いていて、別のシートにあるデータとその行をマージしようとしているようですが、私は確信しています。 –

+0

はい、1つのブックから複数のセルを取り出して別のブックの最後に追加しています。 –

答えて

1

ただ1つのワークシートから別の(Hを通じて全体列A)の範囲をコピーするには、あなたのコードにこの変更は動作します:

$worksheetCSV.activate() 
$range1 = $worksheetCSV.Range("A:H") 
$range1.copy() 

$worksheetXLS.activate() 
$range2 = $worksheetXLS.Range("A:H") 
$worksheetXLS.Paste($range2) 

しかし、あなたは他のワークシート内の既存のデータに追加しているので、すでに存在するものを上書きしないように、ターゲット範囲を別に設定する必要があります。私はまた、既存の範囲は、私はあなたの現在のコードに基づいて2

で行を開始し、これは動作するはずですので、あなたが他のワークシートに複製したくないヘッダを持っていると仮定:

$worksheetCSV.activate() 
$lastRow1 = $worksheetCSV.UsedRange.rows.count 
$range1 = $worksheetCSV.Range("A2:H$lastRow1") 
$range1.copy() 

$worksheetXLS.activate() 
$lastRow2 = $worksheetXLS.UsedRange.rows.count + 1 
$range2 = $worksheetXLS.Range("A$($lastRow2):H$($range1.Rows.Count)") 
$worksheetXLS.Paste($range2) 

へコピー&ペーストの場合、ソース範囲とターゲット範囲のサイズは同じにする必要があります。したがって、このコードは、ソースワークシートのデータの実際の範囲(1行目のヘッダーを引いたもの)を設定してコピーします。次に、使用範囲よりも1行上にあるターゲット範囲を設定し、ソース範囲内の行の総数を拡張します(2つの範囲サイズが一致する必要があります)。最後に、範囲にデータを貼り付けます。

関連する問題