Private m_Book As Excel.Workbook
Private m_Books As Excel.Workbooks
Private m_ExcelApp As Excel.Application
Private Sub InitializeGUI()
m_currentLocale = System.Globalization.CultureInfo.CurrentCulture()
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
m_ExcelApp = New Excel.Application
m_ExcelApp.DisplayAlerts = False
'used to kill the process so must be unique GUID
m_ExcelApp.Caption = System.Guid.NewGuid.ToString
End Sub
Private Sub m_butBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_btnBrowse.Click
m_strWorkbookOld = Me.m_tbWorkbookName.Text
Dim dlg As New SaveFileDialog
dlg.InitialDirectory = GetReportOutputDir()
dlg.DefaultExt = "xls"
dlg.Filter = "Microsoft Excel Worksheets (*.xls)|*.xls"
dlg.OverwritePrompt = False
If Not dlg.ShowDialog() = DialogResult.Cancel Then
Dim strFile As String = dlg.FileName
Me.m_tbWorkbookName.Text = strFile
End If
End Sub
Private Sub m_tbWorkbookName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles m_tbWorkbookName.TextChanged
If Not File.Exists(m_tbWorkbookName.Text) Then
SetDefaults()
Else
Try
m_Books = m_ExcelApp.Workbooks
m_Book = m_Books.Open(m_tbWorkbookName.Text)
m_ExcelApp.Visible = False
Me.LoadWorksheetNames()
Me.LoadNamedRanges()
Me.chkReplaceExistingWorkbook.Enabled = True
Me.ReplaceWorkbookCheckedHandler(chkReplaceExistingWorkbook, New System.EventArgs)
Catch ex As System.Runtime.InteropServices.COMException
If ex.ErrorCode = COM_ERR_CANNOT_ACCESS_READONLY_DOCUMENT Then
TimedStatusMessage("Can't open password protected spreadsheet")
If Not m_strWorkbookOld.Equals(m_tbWorkbookName.Text) Then
Me.m_tbWorkbookName.Text = Me.m_strWorkbookOld
End If
Else
Throw ex
End If
Catch ex As Exception
Throw ex
Finally
If Not m_Book Is Nothing Then
m_Book.Close(False)
End If
End Try
End If
End Sub
Private Sub ExcelGUI_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
ExcelHelper.ReleaseExcelObject(m_Book)
ExcelHelper.ReleaseExcelObject(m_Books)
Try
m_ExcelApp.Quit()
Catch ex As System.Runtime.InteropServices.COMException
'prevent error being thrown if book invoked has disconnected from its client
Finally
ExcelHelper.TerminateExcel(m_ExcelApp)
End Try
System.Threading.Thread.CurrentThread.CurrentCulture = Me.m_currentLocale
End Sub