Excelファイルのシートをコピーする
シートをコピーするには CopySheet メソッド使います。
CopySheet(ByVal sheetno As Integer, ByVal insertpos As Integer, ByVal sheetname As String)
sheetno : コピー元のシート番号値 (0 ~) を設定します。
insertpos : コピー元のシートを挿入するシート番号値 (0 ~) を設定します。
sheetname : シート名を示す文字列を設定します。
ここを空文字("")にすると、「コピー元シート(n)」になります
サンプル(1)
最初のシートを3番目にコピーするサンプルです
Try 'ExcelFileを開く If xlsCr.OpenBook("c:\vbnetdb_シートコピー.xls", "") > -1 Then '0番目のシートを 2番目の位置にコピーし、シート名を「コピーしたシート」に設定します。。 xlsCr.CopySheet(0, 2, "コピーしたシート") '閉じる xlsCr.CloseBook(True) End If Catch ex As Exception MessageBox.Show(ex.Message) End Try
サンプル(2)
実際に使うには、チェックが欠かせません。
「引数SheetNoで指定されるシートが存在するか」、「insertposで指定されるコピー位置が全体のシート数内か」を事前にチェックしたほうがいいです。
Dim isOK As Boolean = True Try 'ExcelFileを開く If xlsCr.OpenBook("c:\vbnetdb_シートコピー.xls", "") > -1 Then If xlsCr.SheetName2(SourceSheetNo).Trim.Length = 0 Then MessageBox.Show("コピー元シートが見つかりません") isOK = False ElseIf xlsCr.SheetCount < CopySheetNo Then MessageBox.Show("全体シート数より挿入先シート番号が大きく指定されています") isOK = False ElseIf xlsCr.SheetNo2(SheetName) > -1 Then MessageBox.Show("コピー元シートと同じ名前が指定されています") isOK = False End If If isOK Then 'シートのコピー xlsCr.CopySheet(SourceSheetNo, CopySheetNo, SheetName) End If '閉じる xlsCr.CloseBook(True) End If Catch ex As Exception MessageBox.Show(ex.Message) End Try
Excelファイルのシートを移動する
シートを移動するメソッドは用意されていないので、CopySheet メソッドと DelSheetメソッドを使います。(強引ですか?)
注意ここでは、コピーして削除するという単純な方法で移動させます。
他のシートで移動するシートのセルを参照している場合、Excel上でシート位置を移動した時のようにセルの計算式を書き換える必要があります。
サンプル
'ExcelFileを開く If xlsCr.OpenBook("c:\vbnetdb_シート移動.xls", "") > -1 Then xlsCr.CopySheet(0, 2, "コピーしたシート2") xlsCr.DelSheet(0, 1) '閉じる xlsCr.CloseBook(True) End If
履歴
- 2012/1/22
- 公開