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