Excelでシートおよびセル範囲をコピーする方法を説明します。

コピーの原理は、指定したセルの範囲をクリップボードにコピーして、それを指定した位置に張り付けることでコピーします。

セル範囲のコピー

Dim xlApp As Excel.Application = New Excel.Application()
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Open("C:\work\myBook1.xls")
Dim xlSheet As Excel.Worksheet = xlBook.Worksheets("Sheet1")

-------------------------------------------------------------
方法①

'クリップボードにコピーする
Dim xlRange As Excel.Range = xlSheet.Cells.Range("A1:B9")
xlRange.Copy()

'指定位置にペーストする
Dim xlPasteRange As Excel.Range = xlSheet.Range("D2")
xlSheet.Paste(xlPasteRange)

'注意以下のように1行で指定すると解放できなくなります
'xlSheet.Paste(xlSheet.Range("D2"))

-------------------------------------------------------------
方法②

Dim xlRange As Excel.Range = xlSheet.Cells.Range("A1:B9")
Dim xlPasteRange As Excel.Range = xlSheet.Range("D2")
xlRange.Copy(xlPasteRange)

-------------------------------------------------------------

xlSheet.Activate()
xlApp.Visible = True

System.Threading.Thread.Sleep(3000)

xlApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlPasteRange)

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

・別ブックおよび別シートのセル範囲をクリップボードにコピーして、指定ブックの指定シートに張り付けることもできます。

・エクセルのコピーは、クリップボードを経由させてコピーすることになります。その間クリップボードは他のプログラムでは使用できませんので注意。また方法②のほうが方法①より他のプログラムへの影響が少ない様です。

シートのコピー

Dim xlApp As Excel.Application = New Excel.Application()
Dim xlBook As Excel.Workbook = xlApp.Workbooks.Open("C:\work\myBook1.xls")

Dim xlSheet As Excel.Worksheet = xlBook.Worksheets("Sheet1")

'シートを別の新規ブックにコピーします。
xlSheet.Copy()

'シートをSheet1の後にシートを新規作成してコピーします。
xlSheet.Copy(After:=xlSheet)

'シートをSheet1の後にシートを新規作成してコピーします。
xlSheet.Copy(Before:=xlSheet)

xlApp.Visible = True

System.Threading.Thread.Sleep(3000)

xlApp.Quit()

System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)