Excel Zugriff mit VB 2010 Express- wo liegt mein Fehler?

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von diablo699.

    Excel Zugriff mit VB 2010 Express- wo liegt mein Fehler?

    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.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim xls_Appl As New Microsoft.Office.Interop.Excel.Application
    3. Const ExcelDatei As String = "E:\testtabelle3.xlsx"
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. xls_Appl.Application.Quit()
    6. xls_Appl = CreateObject("Excel.Application")
    7. xls_Appl.Workbooks.Add()
    8. xls_Appl.Workbooks.Open(ExcelDatei)
    9. xls_Appl.Worksheets(1).Select(1) ' Tabelle 1 auswählen
    10. xls_Appl.Visible = False ' Excel soll nicht sichtbar sein
    11. xls_Appl.ActiveSheet.cells(1, 1) = "1"
    12. xls_Appl.ActiveSheet.cells(1, 2) = "2"
    13. xls_Appl.ActiveSheet.cells(1, 3) = "Test"
    14. 'xls_Appl.ActiveSheet.cells.offset(6, 6) = "teST"
    15. xls_Appl.DisplayAlerts = False
    16. xls_Appl.ActiveWorkbook.SaveAs(ExcelDatei)
    17. ' Schließen:
    18. xls_Appl.Application.Quit()
    19. xls_Appl = Nothing
    20. End Sub
    21. End Class


    Weiteres Beispiel: Das finden der nächsten freien Zeile funktioniert auch nicht. --> "Missing MemberException wurde nicht behandelt"

    VB.NET-Quellcode

    1. Dim nextfreerow As Integer
    2. 'nextfreerow = xls_Appl.ActiveSheetRange("A65536").End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row + 1
    Leider hat noch niemand geantwortet. Eventuell liegt das Thema im falschen Unterforum?

    Hab es weiter versucht: Eigentlich funktioniert keine Operation in Excel - lediglich das Zuweisen eines bestimmten Wertes zu einer bestimmten Zelle funktioniert. Ich bin langsam ratlos...
    Hallo,

    versuche es doch mal so

    VB.NET-Quellcode

    1. Dim Excel_load As Microsoft.Office.Interop.Excel.Application 'Excel
    2. Dim Excel_done As Microsoft.Office.Interop.Excel.Workbook 'Arbeitsmappe
    3. Dim Tabellenblatt1 As Microsoft.Office.Interop.Excel.Worksheet 'Arbeitsblatt
    4. Excel_load = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
    5. Excel_load.Visible = True
    6. Excel_done = Excel_load.Workbooks.Add
    7. '***********************Beschreibung Tabellenblatt1 Anfang*******************************
    8. Tabellenblatt1 = CType(Excel_done.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet)
    9. Tabellenblatt1.Range("C6").Value = "Name:"