Heyho,
die ähnlichen Themen, die ich hier oder via Google fand, waren ungelöst oder sehr schwammig formuliert, sodass ich da keinen Weg der Lösung sehen konnte.
Problem ist folgendes:
Eine Form hat einen Button, welcher eine Funktion in einem Modul aufruft.
Diese Funktion (
Diese Exception wird von "
Hat jemand eine Ahnung, wie ich an die Fehlermeldung von InteropServices komme?
Der betreffende Code (Nachtrag:
die ähnlichen Themen, die ich hier oder via Google fand, waren ungelöst oder sehr schwammig formuliert, sodass ich da keinen Weg der Lösung sehen konnte.
Problem ist folgendes:
Eine Form hat einen Button, welcher eine Funktion in einem Modul aufruft.
Diese Funktion (
ExcelSachen.testopenclose()
) wird im Einzelschritt zwar aufgerufen aber der Einzelschrittdurchlauf springt nicht in das betreffende Modul sondern bricht schon beim Aufruf in der Form ab und fängt den Fehler im Catch-Block auf.Diese Exception wird von "
System.Runtime.InteropServices.COMException
" ausgelöst, aber dessen Fehlermeldung wird nicht durchgeschleift. Somit weiss ich nicht, was für eine Exception bei InteropServices anfällt Hat jemand eine Ahnung, wie ich an die Fehlermeldung von InteropServices komme?
Der betreffende Code (Nachtrag:
Option Strict On
):VB.NET-Quellcode
- Private Sub btn_testopenclose_Click(sender As System.Object, e As System.EventArgs) Handles btn_testopenclose.Click
- Dim path As String = My.Settings.Rauheiten3040ImportPath
- Try
- OFD_RauheitenFile.InitialDirectory = path
- OFD_RauheitenFile.Filter = "Excel-Dateien|*.xls;*.xlsx"
- OFD_RauheitenFile.ShowDialog()
- tb_RauheitenFilename.Text = OFD_RauheitenFile.FileName
- ExcelSachen.testopenclose(tb_RauheitenFilename.Text)
- Catch ex As Exception
- Dim funcname As String = System.Reflection.MethodInfo.GetCurrentMethod.Name
- Hilfssachen.ShowError(funcname, ex.Message)
- Finally
- ' resetAll()
- End Try
- End Sub
ExcelSachen.vb:
VB.NET-Quellcode
- Imports Microsoft.Office.Interop.Excel
- Imports Microsoft.VisualBasic.ControlChars
- Module ExcelSachen
- Dim XLApp As New Microsoft.Office.Interop.Excel.Application
- Dim WBook As New Microsoft.Office.Interop.Excel.Workbook
- Dim WSheet As Microsoft.Office.Interop.Excel.Worksheet
- Dim openedXLFile As Boolean = False
- Public Sub testopenclose(ByVal filename As String)
- Try
- openXLFile(filename)
- closeXLFile()
- Catch ex As Exception
- MessageBox.Show(ex.Message)
- End Try
- End Sub
- ''' <summary>
- ''' Öffnet eine Excel-Datei und macht sie über das WBook-Objekt verfügbar
- ''' </summary>
- ''' <param name="filename">Dateiname (mit kompl. Pfad)</param>
- ''' <returns>0 = unhadled Error, 1 = all OK, 2 = already opened File</returns>
- ''' <remarks></remarks>
- Private Function openXLFile(ByVal filename As String) As UShort
- Try
- If Not openedXLFile Then
- WBook = XLApp.Workbooks.Open(filename)
- openedXLFile = True
- Return 1
- Else
- Return 2
- End If
- Catch ex As Exception
- MessageBox.Show("Fehler in Funktion ExcelSachen.openXLFile():" + CrLf + ex.Message, Nothing, MessageBoxButtons.OK)
- End Try
- Return 0
- End Function
- ''' <summary>
- ''' Schliesst die aktuelle geöffnete Excel-Datei
- ''' </summary>
- ''' <returns>true/false</returns>
- ''' <remarks></remarks>
- Private Function closeXLFile() As Boolean
- If openedXLFile Then
- Try
- WBook.Close()
- openedXLFile = False
- Return True
- Catch ex As Exception
- MessageBox.Show("Fehler in Funktion ExcelSachen.closeXLFile():" + CrLf + ex.Message, Nothing, MessageBoxButtons.OK)
- End Try
- Else
- Return False
- End If
- Return False
- End Function
- ''' <summary>
- ''' Die aktuell geöffnete Excel-Datei speichern
- ''' </summary>
- ''' <param name="filename"></param>
- ''' <returns>0 = unknown error, 1 = alles OK, 2 = Fehler beim speichern, 3 = keine XL-Datei offen</returns>
- ''' <remarks></remarks>
- Private Function saveXLFile(Optional ByVal filename As String = "none") As UShort
- If openedXLFile Then
- If filename = "none" Then
- Try
- WBook.Save()
- Return 1
- Catch ex As Exception
- MessageBox.Show("Fehler in Funktion ExcelSachen.saveXLFile(ohne filename):" + CrLf + ex.Message, Nothing, MessageBoxButtons.OK)
- Return 2
- End Try
- Else
- Try
- WBook.SaveAs(filename)
- Return 1
- Catch ex As Exception
- MessageBox.Show("Fehler in Funktion ExcelSachen.saveXLFile(mit filename):" + CrLf + ex.Message, Nothing, MessageBoxButtons.OK)
- Return 2
- End Try
- End If
- Else ' openedXLFile = false
- Return 3
- End If
- Return 0
- End Function
- End Module
AUsgabe vom Direktfenster
:Quellcode
- Einzelschritt: Nichtbenutzercode "Trixell_Master4.My.MySettingsProperty.get_Settings" wird übersprungen.
- Einzelschritt: Trixell_Master4.My.MySettings.get_Default-Eigenschaft wird übersprungen. Für einen Einzelschritt in Eigenschaften deaktivieren Sie unter "Extras->Optionen->Debuggen" die Option "Eigenschaften und Operatoren überspringen (nur verwaltet)".
- Einzelschritt: Nichtbenutzercode "Trixell_Master4.My.MySettingsProperty.get_Settings" wird übersprungen.
- Einzelschritt: Trixell_Master4.My.MySettings.get_Rauheiten3040ImportPath-Eigenschaft wird übersprungen. Für einen Einzelschritt in Eigenschaften deaktivieren Sie unter "Extras->Optionen->Debuggen" die Option "Eigenschaften und Operatoren überspringen (nurEinzelschritt: Nichtbenutzercode "Trixell_Master4.GetRauheiten.OFD_RauheitenFile.get" wird übersprungen.
- Einzelschritt: Nichtbenutzercode "Trixell_Master4.GetRauheiten.OFD_RauheitenFile.get" wird übersprungen.
- Einzelschritt: Nichtbenutzercode "Trixell_Master4.GetRauheiten.OFD_RauheitenFile.get" wird übersprungen.
- Einzelschritt: Nichtbenutzercode "Trixell_Master4.GetRauheiten.tb_RauheitenFilename.get" wird übersprungen.
- Einzelschritt: Nichtbenutzercode "Trixell_Master4.GetRauheiten.tb_RauheitenFilename.get" wird übersprungen.
- Eine Ausnahme (erste Chance) des Typs "System.Runtime.InteropServices.COMException" ist in Trixell-Master4.exe aufgetreten.
- Eine Ausnahme (erste Chance) des Typs "System.TypeInitializationException" ist in Trixell-Master4.exe aufgetreten.
- Einzelschritt: Nichtbenutzercode "System.Exception.Message.get" wird übersprungen.
- Eine Ausnahme (erste Chance) des Typs "System.Runtime.InteropServices.COMException" ist in Trixell-Master4.exe aufgetreten.
- Eine Ausnahme (erste Chance) des Typs "System.TypeInitializationException" ist in Trixell-Master4.exe aufgetreten.