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
- 公開