Hey guys,
My program is fairly simple. Data is put into a worksheet, and a series of pivot tables and charts are created off it. For whatever reason, the Excel instance created is not killing itself. I have gone through pretty much every tutorial I can get my hands on and have no idea why this is not properly closing. Could a fresh pair of eyes have a quick look and help me out? Thanks.
Thanks alotCode:Public Sub saveExcelFile(ByVal path As String) 'excluded code to query database Dim app As excel.Application Dim wb As excel.Workbook Dim sheet As excel.Worksheet Dim range As excel.Range MsgBox("Creating Excel Instances") 'start new excel application app = New excel.Application 'set some settings app.DisplayAlerts = False 'get new workbook wb = app.Workbooks.Add 'get active sheet sheet = DirectCast(wb.ActiveSheet, excel.Worksheet) sheet.Name = "Data Extract" MsgBox("Finished Creating Instances") Dim objArray(ResultTable.Rows.Count + 1, ResultTable.Columns.Count) For i = 0 To ResultTable.Columns.Count - 1 objArray(0, i) = ResultTable.Columns(i).ColumnName.ToString Next Dim iRow As Integer = 1 Dim iCol As Integer = 0 MsgBox("Copying Data") For i = 0 To ResultTable.Rows.Count - 1 For j = 0 To ResultTable.Columns.Count - 1 objArray(i + 1, j) = ResultTable.Rows(i).Item(j).ToString Next Next MsgBox("Finished Copying Data") MsgBox("Writing To Spreadsheet") range = sheet.UsedRange range = range.Resize(ResultTable.Rows.Count + 1, ResultTable.Columns.Count) range.Value = objArray range = sheet.UsedRange range.EntireColumn.AutoFit() MsgBox("Finished Writing To Spreadsheet") Dim PivotSheet As excel.Worksheet PivotSheet = wb.Sheets.Add() PivotSheet.Name = "Cluster Pivot" Dim destRange As excel.Range = PivotSheet.UsedRange Dim PT1 As excel.PivotTable PT1 = PivotSheet.PivotTableWizard(excel.XlPivotTableSourceType.xlDatabase, range, destRange) PT1.PivotFields("Cluster").orientation = excel.XlPivotFieldOrientation.xlRowField PT1.AddDataField(PT1.PivotFields("Status"), "Count of Status", excel.XlConsolidationFunction.xlCount) PT1.PivotFields("Status").orientation = excel.XlPivotFieldOrientation.xlColumnField PT1.PivotFields("Status").pivotitems("5. Not InScope").visible = False PT1.PivotFields("Cluster").pivotitems("Not Found").visible = False Dim ChartSheet As excel.Worksheet ChartSheet = wb.Sheets.Add ChartSheet.Name = "Cluster Chart" Dim chartpage As excel.Chart Dim xlcharts As excel.ChartObjects Dim mychart As excel.ChartObject Dim chartrange As excel.Range = PivotSheet.UsedRange xlcharts = ChartSheet.ChartObjects mychart = xlcharts.Add(10, 80, 1000, 500) chartpage = mychart.Chart chartpage.SetSourceData(chartrange) chartpage.ChartType = excel.XlChartType.xlBarStacked100 chartpage.Legend.Position = excel.XlLegendPosition.xlLegendPositionBottom chartpage.ApplyDataLabels(excel.XlDataLabelsType.xlDataLabelsShowValue) chartpage.ChartArea.Font.Size = 15 For i = 1 To chartpage.SeriesCollection.count Select Case i Case 1 chartpage.SeriesCollection(i).interior.color = RGB(127, 255, 0) Case 2 chartpage.SeriesCollection(i).interior.color = RGB(255, 255, 0) Case 3 chartpage.SeriesCollection(i).interior.color = RGB(255, 165, 0) Case 4 chartpage.SeriesCollection(i).interior.color = RGB(255, 0, 0) Case Else chartpage.SeriesCollection(i).interior.color = RGB(255, 255, 255) End Select chartpage.SeriesCollection(i).border.color = RGB(0, 0, 0) chartpage.SeriesCollection(i).border.weight = excel.XlBorderWeight.xlThin Next wb.SaveAs(path) wb.Close() wb = Nothing app.Quit() MsgBox("Finished") releaseObject(chartrange) releaseObject(destRange) releaseObject(range) releaseObject(mychart) releaseObject(xlcharts) releaseObject(PT1) releaseObject(chartpage) releaseObject(ChartSheet) releaseObject(PivotSheet) releaseObject(sheet) releaseObject(wb) releaseObject(app) MsgBox("Finished Release") end sub Public Sub releaseObject(ByVal obj As Object) Try While System.Runtime.InteropServices.Marshal.FinalReleaseComObject(obj) > 0 End While obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() GC.WaitForPendingFinalizers() GC.Collect() GC.WaitForPendingFinalizers() End Try End Sub




Reply With Quote