vb.net Probleme beim Excel beenden nach bearbeiten erhalte Fehler: HRESULT: 0x800A03EC

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von shadow01.

    vb.net Probleme beim Excel beenden nach bearbeiten erhalte Fehler: HRESULT: 0x800A03EC

    Hallo Zusammen

    Problem: Mein Tool soll per BulkLoad eine CSV Datei in eine Datenbank kopieren. Das funktioniert soweit sehr gut. Da die csv Datei nicht wirklich eine CSV Datei ist sondern eine txt Datei will ich diese automatisiert erstellen.
    in der txt Datei sind 65 Zeichen aneinander gereiht. Mein Makro öffnet die txt Datei kopiert diese in die Tabelle1. In Tabelle2 wird mittels =Teil die Zeichen an bestimmten Positionen aufgeteilt.
    Nach dem beenden des Makros möchte ich die Werte der Tabelle2 in CsvToDb.csv speichern. leider erhalte ich immer den Fehler HRESULT: 0x800A03EC. Über den Fehler liest man viel leider bin ich aber nicht im Stande den Fehler zu finden.

    VB.NET-Quellcode

    1. Dim oExcel As Microsoft.Office.Interop.Excel.Application
    2. Dim oBook As Microsoft.Office.Interop.Excel.Workbook
    3. Dim oBooks As Microsoft.Office.Interop.Excel.Workbooks
    4. oExcel = CreateObject("Excel.Application")
    5. oExcel.Visible = False
    6. oBooks = oExcel.Workbooks
    7. oBook = oBooks.Open(Application.StartupPath & "\Create_CSV.xlsm")
    8. oExcel.Run("Tabelle1_Teilen")
    9. 'HRESULT: 0x800A03EC
    10. oBook.SaveAs(Filename:=Application.startupPath & "\CsvToDb.csv", CreateBackup:=False, Local:=False, FileFormat:="xlCSV")
    11. oBook.Close(SaveChanges:=false)
    12. oBook = Nothing
    13. oExcel.Quit()
    14. oExcel = Nothing


    Der Fehler erscheint nach dem ausführen des Makros in der zeile: oExcel.Run("Tabelle1_Teilen")

    ich hoffe jemand kann mir helfen.

    Gruss und Danke

    shadow01 schrieb:

    Über den Fehler liest man viel
    jo, habichmal gegoogelt und fund dieses:
    stackoverflow.com/questions/70…a03ec-on-worksheet-range:
    This problem occurs if you are using a backwards compatible sheet (a .xls) instead of a .xlsx.
    To allow sheets to be opened in pre office 2007 version it can't contain more than 65k rows. You can check the number of rows in your sheet by using ctrl+arrowdown till you hit the bottom.
    If you try to get a range larger than that number of rows it will create an error
    Das ist doch ziemlich klar: Der Fehler wird durch das Makro ausgelöst.

    shadow01 schrieb:

    ich hoffe jemand kann mir helfen.
    Helfen kann nur jemand, der das Makro kennt.
    Hallo ErfinderDesRades

    Danke für deine Antwort aber am Makro liegt es nicht. Wenn man das Makro manuell startet läuft es Tipp Top. Ich dachte erst es liegt daran dass die aktive Tabelle die falsche ist.
    Das Makro sieht so aus:

    VB.NET-Quellcode

    1. Sub Tabelle1_Teilen()
    2. '
    3. ' Tabelle1_Teilen Makro
    4. ' Werte der Tabelle1 teilen
    5. '
    6. 'Letzte Zeile in Tabelle1 ermitteln
    7. letztezeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
    8. ' MsgBox letztezeile
    9. '
    10. 'von Tabelle1 auf Tabelle2 Teilen z.B. =Teil(A2;1;9) ; =Teil(A2;10;9) etc
    11. Sheets("Tabelle2").Select
    12. Range("A2").Select
    13. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC,1,9)"
    14. Range("B2").Select
    15. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-1],10,9)"
    16. Range("C2").Select
    17. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-2],19,1)"
    18. Range("D2").Select
    19. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-3],20,4)"
    20. Range("E2").Select
    21. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-4],24,10)"
    22. Range("F2").Select
    23. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-5],34,3)"
    24. Range("G2").Select
    25. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-6],37,4)"
    26. Range("G2").Select
    27. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-6],37,5)"
    28. Range("H2").Select
    29. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-7],42,8)"
    30. Range("I2").Select
    31. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-8],50,9)"
    32. Range("J2").Select
    33. ActiveCell.FormulaR1C1 = "=MID(Tabelle1!RC[-9],59,7)"
    34. Range("A2:J2").Select
    35. 'auf alle Zeilen anwenden
    36. Selection.AutoFill Destination:=Range("A2:J" & letztezeile), Type:=xlFillDefault
    37. Range("A2:J" & letztezeile).Select
    38. 'alles Kopieren und Werte einfügen
    39. Selection.Copy
    40. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    41. :=False, Transpose:=False
    42. Range("K2").Select
    43. 'Als CSV speichern
    44. 'ActiveWorkbook.SaveAs Filename:=Application.ActiveWorkbook.Path & "\CsvToDb.csv", CreateBackup:=False, Local:=False, FileFormat:=xlCSV
    45. 'ActiveWorkbook.Close SaveChanges:=False
    46. End Sub


    Gruss und Danke