Back to Top

プログラムの覚書

Category: VB.NET

VB.NET

VB.NET Excelシート・セル範囲をコピーする

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)

 

Posted in Excel | Leave a reply

VB.NET Excelの名前付きセルに入力する

Excelの名前を付けたセルの位置を取得して、値を設定する方法を記載します。

名前付きセル位置の取得および値の設定をする

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

'名前付きセルを取得する
Dim xlRange As Excel.Range = xlSheet.Range("名前")
xlRange.Value = "ぷろぐらむノート"

xlSheet.Activate()
xlApp.Visible = True

System.Threading.Thread.Sleep(3000)
xlApp.Quit()

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

 

Posted in Excel | Leave a reply