Back to Top

プログラムの覚書

VB.NET Excelシートのセルの値および属性を変更する

Excelでシート内のセルの値および属性を変更する方法を説明します。

変更にはRangeを使用して変更します。そのため1つのセルだけでわなく複数のセルを一度に変更することができます。

セル値およびセルの属性の設定をする

Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet

xlApp = New Excel.Application()

xlApp.Application.Workbooks.Add()
xlSheet = CType(xlApp.Worksheets(1), Excel.Worksheet)
xlSheet.Name = "シート"


' セル選択(単一・複数指定できる)
Dim xlCells As Excel.Range = xlSheet.Range("C3")
または
Dim xlCells As Excel.Range = xlSheet.Cells.Range("C3")
または
Dim xlCells As Excel.Range = xlSheet.Cells(3, 3)


' セルのフォント設定
xlCells.Font.Size = 20
xlCells.Font.Name = "MS 明朝"

' セルにデータ書込み
xlCells.Value = "1234567890"

' セルの背景色設定
xlCells.Interior.Color = &H44FFFF

' セルの文字色設定
xlCells.Font.Color = &HFFFF00


xlApp.Visible = True

System.Threading.Thread.Sleep(3000)
xlApp.Quit()
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\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