どうも、あおです。
VB.NETでExcel操作する際、
既存シートを任意の位置に移動する方法。
今回は以下のように「def」シートを「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") '移動対象のシート Dim xldefSh As Excel.Worksheet = xlBk.Worksheets("def") Try 'シート移動 xldefSh.Move(After:=xlBk.Worksheets("paste")) 'Excelを表示する xlApp.Visible = True '移動したシートをアクティブにする xldefSh.Activate() '処理終了のメッセージダイアログ表示 MessageBox.Show("処理終了しました", "確認", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) Catch ex As Exception MsgBox(ex.Message) Finally 'Excelの各プロセス解放 If Not xldefSh Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xldefSh) xldefSh = 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の各プロセス解放
移動しました。
おわり