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