Ich möchte aus Visual Basic 2010 Express auf Microsoft Excel 2007 zugreifen. Bei bestimmten Befehlen kommen Fehlermeldungen. Vermutlich mache etwas grundsätzlich falsch oder es stimmt etwas mit meinen Verweisen nicht? Ich hoffe mir kann jemand helfen.
Zur Veranschaulichung habe ich ein kleines Programm geschrieben, siehe Quelltext. Es soll eine (vorhandene) Exceldatei öffnen, in definierte Zellen Werte schreiben und anschließen speichern und schließen.
Folgende verweise (COM) habe ich geladen:
- Microsoft Excel 12.0 Object Library
- microsoft Excel 5.0 Objektbibliothek
Mein vereinfachtes Programm soll das Problem zeigen: Bestimmte Zeilen werden mit den Werten ("1", "2", "Test") wie gewünscht befüllt. Sobald ich aber "offset" nutzen möchte, bricht das Programm ab. --> COMException wurde nicht behandelt. Die Fehlermeldung bekomme ich immer, wenn ich mich nicht auf bestimmte Zellen beziehe, sondern z. B. mit Offset referenziere.
Weiteres Beispiel: Das finden der nächsten freien Zeile funktioniert auch nicht. --> "Missing MemberException wurde nicht behandelt"
Zur Veranschaulichung habe ich ein kleines Programm geschrieben, siehe Quelltext. Es soll eine (vorhandene) Exceldatei öffnen, in definierte Zellen Werte schreiben und anschließen speichern und schließen.
Folgende verweise (COM) habe ich geladen:
- Microsoft Excel 12.0 Object Library
- microsoft Excel 5.0 Objektbibliothek
Mein vereinfachtes Programm soll das Problem zeigen: Bestimmte Zeilen werden mit den Werten ("1", "2", "Test") wie gewünscht befüllt. Sobald ich aber "offset" nutzen möchte, bricht das Programm ab. --> COMException wurde nicht behandelt. Die Fehlermeldung bekomme ich immer, wenn ich mich nicht auf bestimmte Zellen beziehe, sondern z. B. mit Offset referenziere.
VB.NET-Quellcode
- Public Class Form1
- Dim xls_Appl As New Microsoft.Office.Interop.Excel.Application
- Const ExcelDatei As String = "E:\testtabelle3.xlsx"
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- xls_Appl.Application.Quit()
- xls_Appl = CreateObject("Excel.Application")
- xls_Appl.Workbooks.Add()
- xls_Appl.Workbooks.Open(ExcelDatei)
- xls_Appl.Worksheets(1).Select(1) ' Tabelle 1 auswählen
- xls_Appl.Visible = False ' Excel soll nicht sichtbar sein
- xls_Appl.ActiveSheet.cells(1, 1) = "1"
- xls_Appl.ActiveSheet.cells(1, 2) = "2"
- xls_Appl.ActiveSheet.cells(1, 3) = "Test"
- 'xls_Appl.ActiveSheet.cells.offset(6, 6) = "teST"
- xls_Appl.DisplayAlerts = False
- xls_Appl.ActiveWorkbook.SaveAs(ExcelDatei)
- ' Schließen:
- xls_Appl.Application.Quit()
- xls_Appl = Nothing
- End Sub
- End Class
Weiteres Beispiel: Das finden der nächsten freien Zeile funktioniert auch nicht. --> "Missing MemberException wurde nicht behandelt"