どうも、あおです。
VB.NETでExcel操作する際、
既存シートを任意の位置にコピーする方法。
今回は以下のように
「paste」シートを「paste」シートの右にコピーしたい。

以下サンプルソース。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Excelオブジェクトを生成
Dim xlApp As New Excel.Application()
'指定したExcelファイルを開く
Dim xlBk As Excel.Workbook = xlApp.Workbooks.Open("C:\Users\user\Desktop\test.xls")
'コピー元シート ※一番左のシートをコピーしたい場合は、下のように「Item(1)」でも指定可能
'Dim xltarSh As Excel.Worksheet = CType(xlBk.Worksheets.Item(1), Excel.Worksheet)
Dim xltarSh As Excel.Worksheet = CType(xlBk.Worksheets("paste"), Excel.Worksheet)
Try
'シートコピー
xltarSh.Copy(After:=xlBk.Worksheets("paste"))
'Excelを表示する
xlApp.Visible = True
'処理終了のメッセージダイアログ表示
MessageBox.Show("処理終了しました",
"確認",
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1,
MessageBoxOptions.DefaultDesktopOnly)
Catch ex As Exception
MsgBox(ex.Message)
Finally
'Excelの各プロセス解放
If Not xltarSh Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xltarSh)
xltarSh = Nothing
End If
If Not xlBk Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBk)
xlBk = Nothing
End If
If Not xlApp Is Nothing Then
xlApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
xlApp = Nothing
End If
GC.Collect()
End Try
End Sub
End Class
簡単に説明すると、
先にForm1というフォームをつくって、
ボタンを配置します。(今回の名前は「Button1」)
そして以下の流れ。
1)対象のExcelファイルの場所+ファイル名をセット
2)コピー対象のシート名セット
3)シートコピー(今回は「paste」シートの右にコピーしたいので
そのように指定。)
4)対象のExcelを表示する
5)処理が終わった合図として、メッセージダイアログを表示
6)Excelの各プロセス解放
コピーしました。

おわり

