VBAからもできるでしょうと思ったけど・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Public Function Excelbinding() Dim objExcel As Object Dim objExApp As Object Dim objWorkbook As Object Dim objWorkbooks As Object Dim fpath As String fpath = "xlsファイルのパス" Dim objSheets As Object Dim objSheet1 As Object Dim objSheet2 As Object Dim objSheet3 As Object Dim objCells As Object Dim I As Integer Dim j As Integer Set objExcel = CreateObject("Excel.Application") Set objExApp = objExcel.Application objExApp.Visible = True Set objWorkbooks = objExApp.Workbooks Set objWorkbook = objWorkbooks.Open(fpath) objExcel.DisplayAlerts = False 'System.Threading.Thread.Sleep(5000) Set objSheets = objExApp.Sheets Set objSheet1 = objSheets(1) objSheet1.Delete Set objSheet1 = objSheets(1) Set objSheet2 = objSheets("シート名") objSheet2.Copy Before:=objSheet1 Set objSheet3 = objSheets("シート名 (2)") '前回と同じコピーに流し込む Set objCells = objSheet3.Cells Call Ary関数 For j = 0 To UBound(Ary関数, 1) For I = 1 To UBound(Ary関数, 2) objCells(j + 1, I + 2) = Ary関数(j, I) Next Next objWorkbook.SaveAs (fpath) objExApp.Quit objExcel.DisplayAlerts = True Set objCells = Nothing Set objSheets = Nothing Set objSheet1 = Nothing Set objSheet2 = Nothing Set objSheet3 = Nothing Set objWorkbook = Nothing Set objWorkbooks = Nothing Set objExApp = Nothing Set objExcel = Nothing end function |
今までは意識してなかったけどVBAではオブジェクト解放は要らない?
プロセスは残らないが・・
とりあえずset=nothingで安心することに。