| | タイトル | : 最後にエクセルシート追加は可能でしょうか |  | 記事No | : 11577 |  | 投稿日 | : 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
 
 |