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)