tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 最後にエクセルシート追加は可能でしょうか
投稿日: 2016/01/07(Thu) 14:36
投稿者SUZUKI
VB6.0からVB2005変換挑戦中のSUZUKIです
連続の質問で申し訳ありませんが付合っていただければ幸いです
花ちゃんのご指摘を受けエクセルの制御を参照型にして
お勉強始めたのですが、なかなか解決しないのが出て来ました
下記はシート追加、名前変更のサンプルです。ほとんどコピーですが。。。。
当方最初のシート枚数が3枚なのでうまく動かないと思うのですが、

シート追加は最初のシートの前に追加されます
名前変更は最後のシートに反映されます
ここで悩みました、
最後のシートの後ろに追加するにはどうするんだろう?
マクロをしても最初に追加されるのでダメなのかも知れないのですが
ある程度の結論を出したく質問させて頂きました
よろしくお願いします


   Private Sub Button1_Click
        Dim xlApp As Excel.Application
        Dim xlBooks As Excel.Workbooks
        Dim xlBook As Excel.Workbook
        Dim xlSheets As Excel.Sheets
        Dim xlSheet As Excel.Worksheet
        Dim SHEETCOUNT As Integer
        Dim I As Integer
        xlApp = New Excel.Application
        xlBooks = xlApp.Workbooks
        '既存のファイルを開く
        xlBook = xlBooks.Open("C:\TEST.XLS")
        xlSheets = xlBook.Worksheets
        xlApp.Visible = True     ' xlApp = New Excel.Application
        SHEETCOUNT = xlSheets.Count
        'Excel の裏に隠れたりしますので、オーナーウィンドウ(Me)を指定下さい。
        MessageBox.Show(Me, "現在のシート(Worksheet)数 = " & SHEETCOUNT & " です。")
        '新規にシートを追加
        Dim xlSheet2 As Excel.Worksheet
        xlSheet2 = DirectCast(xlSheets.Add, Excel.Worksheet)
        MRComObject(xlSheet2)
        SHEETCOUNT = xlSheets.Count
        MessageBox.Show(Me, "シートを1個追加したので、Worksheet 数 = " & SHEETCOUNT & " です。")
        '追加したシートの名前を取得()
        Dim xlSheet1 As Excel.Worksheet
        xlSheet1 = DirectCast(xlSheets.Item(SHEETCOUNT), Excel.Worksheet)
        MessageBox.Show(Me, "追加したシート名 = " & xlSheet1.Name & " です。")
        ' 追加したシートの名前を変更()
        xlSheet1.Name = "Test1"
        '変更したシート名を取得(確認)
        MessageBox.Show(Me, "シート名を " & xlSheet1.Name & " に変更しました。")
        MRComObject(xlSheet1)

LABELA:
        xlBook.SaveAs("C:\TEST1.XLS")

        MRComObject(xlSheet, True)
        MRComObject(xlSheets, True)
        xlBook.Close()
        MRComObject(xlBook, True)
        MRComObject(xlBooks, True)
        xlApp.Quit()
        MRComObject(xlApp, True)
        MsgBox("エクセル出力成功しました?")
    End Sub

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。