Daten an Excel übertragen (Listbox)

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Sub7evenHH.

    Daten an Excel übertragen (Listbox)

    Hi,

    ich möchte gerne die Inhalte einer Listbox an Excel übertragen. Einzelne Inhalte funktionieren auch ganz gut. Nur die Listbox macht Probleme.

    Der Code:

    VB.NET-Quellcode

    1. Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
    2. Dim oExcel As Object
    3. Dim oBook As Object
    4. Dim oSheet As Object
    5. Dim OffS As Integer
    6. oExcel = CreateObject("Excel.Application")
    7. oBook = oExcel.Workbooks.Open("C:\Test\test.xlsx")
    8. oSheet = oBook.Worksheets(1)
    9. oSheet.Range("A20:A40").Value = ""
    10. For Each oItem In Name_ListBox.Items
    11. oBook.Sheets(1).Range("A20").Offset(OffS, 0).Value = oItem
    12. OffS = OffS + 1
    13. Next oItem
    14. oSheet.Range("B10").Value = Adresse_TextBox.Text
    15. oSheet = oBook.Worksheets(1).PrintOut
    16. oBook = Nothing
    17. oExcel.Quit()
    18. oExcel = Nothing
    19. GC.Collect()
    20. End Sub



    Ich erhalte den Fehler bei oItem:

    XML-Quellcode

    1. COMException wurde nicht behandelt.

    XML-Quellcode

    1. Mitglied nicht gefunden. (Ausnahme von HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))


    Den Verweis auf MS Office 16.0 Object Libary habe ich hinzugefügt.

    Kann mir einer helfen?
    Dankeee

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Wie wär's erstmal mit Option Strict On?
    Ist die ListBox an irgendwelche Datenquellen gebunden? Wenn ich den Code mit einer rein mit Strings befüllten ListBox teste, läuft es.
    btw: Warum mit For Each arbeiten, wenn Du dann eh einen Zählindex für Excel hernimmst. Dann wär ne normale For-Schleife sinnvoller - zumindest bei jenem Code.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Sub7evenHH schrieb:

    wird mir oBook markiert und Fehler angezeigt
    Ich hätte jetzt eher vermutet, dass oExcel markiert wird.
    CreateObject erzeugt Late Binding (spätes Binden).
    Du kannst das Excel-Objekt aber auch zur Compile-Zeit binden

    VB.NET-Quellcode

    1. Dim oExcel as New Excel.Application
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    "Lässt kein Binden zu" oder "Lässt kein spätes Binden zu"?
    Bin selbst nicht der Profi, aber fehlt da bei deinen Deklarationen nicht ein New?

    Edit: @petaod war schneller.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.