Excel OleDbDataAdapter: Aufruf von Tabellenname generiert Fehler

  • VB.NET
  • .NET (FX) 4.5–4.8

    Excel OleDbDataAdapter: Aufruf von Tabellenname generiert Fehler

    Hallo zusammen,

    ich versuche die Daten aus einer Excel-Datei auszulesen und an ein DataGridView anzubinden.
    Das Komische daran ist, dass es meistens funktioniert (habe noch nicht herausgefunden, woran es liegt).

    Ich rufe mit einem Button "ExcelPositionHinzu" auf und übergebe in dem Beispiel den Namen "Position2":

    VB.NET-Quellcode

    1. Sub ExcelPositionHinzu(Positionsname As String, xlApp As Microsoft.Office.Interop.Excel.Application, xlMappe As Microsoft.Office.Interop.Excel.Workbook)
    2. Dim arrColumnNamesBOM() As String = {" ", Dictionary(intSprache, 122), Dictionary(intSprache, 95), Dictionary(intSprache, 106), Dictionary(intSprache, 117), Dictionary(intSprache, 0), Dictionary(intSprache, 1), Dictionary(intSprache, 118), Dictionary(intSprache, 119), Dictionary(intSprache, 120), Dictionary(intSprache, 121), Dictionary(intSprache, 96), Dictionary(intSprache, 171), Dictionary(intSprache, 97), Dictionary(intSprache, 98), Dictionary(intSprache, 99), Dictionary(intSprache, 100), Dictionary(intSprache, 101), Dictionary(intSprache, 102), Dictionary(intSprache, 103), Dictionary(intSprache, 104), Dictionary(intSprache, 105), Dictionary(intSprache, 107), Dictionary(intSprache, 108), Dictionary(intSprache, 109), Dictionary(intSprache, 110), Dictionary(intSprache, 111) & "FFS", Dictionary(intSprache, 112) & "FFS", Dictionary(intSprache, 113) & "FFS", Dictionary(intSprache, 111) & "Baltec", Dictionary(intSprache, 112) & "Baltec", Dictionary(intSprache, 113) & "Baltec", Dictionary(intSprache, 111) & "Vorfert", Dictionary(intSprache, 112) & "Vorfert", Dictionary(intSprache, 113) & "Vorfert", Dictionary(intSprache, 111) & "Gravieren", Dictionary(intSprache, 112) & "Gravieren", Dictionary(intSprache, 113) & "Gravieren", Dictionary(intSprache, 111) & "Werkstatt", Dictionary(intSprache, 112) & "Werkstatt", Dictionary(intSprache, 113) & "Werkstatt", Dictionary(intSprache, 111) & "MontageEXKO", Dictionary(intSprache, 112) & "MontageEXKO", Dictionary(intSprache, 113) & "MontageEXKO", Dictionary(intSprache, 114) & "EX29", Dictionary(intSprache, 115) & "EX29", Dictionary(intSprache, 116) & "EX29", Dictionary(intSprache, 111) & "AF09", Dictionary(intSprache, 112) & "AF09", Dictionary(intSprache, 113) & "AF09", Dictionary(intSprache, 111) & "AF10", Dictionary(intSprache, 112) & "AF10", Dictionary(intSprache, 113) & "AF10", Dictionary(intSprache, 111) & "AF11", Dictionary(intSprache, 112) & "AF11", Dictionary(intSprache, 113) & "AF11"}
    3. 'Fügt eine Position in Excel hinzu
    4. Worksheet = xlMappe.Worksheets.Add(After:=xlMappe.Sheets(xlMappe.Sheets.Count))
    5. For i = 0 To DatensatzWerte
    6. Worksheet.Columns(i+1).NumberFormat = "@" 'Spalte 1 bis Anzahl(DatensatzWerte) auf Textformat stellen
    7. Next
    8. With Worksheet
    9. 'Tabellenname
    10. .Name = Positionsname
    11. 'Spalten bezeichnen
    12. .Cells(1, 1) = "ID"
    13. .Cells(1, 2) = "Bezeichnung"
    14. .Cells(1, 3) = "Stückzahl"
    15. .Cells(1, 4) = "Bereich"
    16. .Cells(1, 5) = "Ersatzteilzuschlag"
    17. .Cells(1, 6) = "Betriebsspannung"
    18. .Cells(1, 7) = "Steuerspannung"
    19. .Cells(1, 8) = "Vorsicherung"
    20. .Cells(1, 9) = "MinTemp"
    21. .Cells(1, 10) = "MaxTemp"
    22. .Cells(1, 11) = "ATEX"
    23. .Cells(1, 12) = "IECEx"
    24. .Cells(1, 13) = "CSA"
    25. .Cells(1, 14) = "TRCU"
    26. .Cells(1, 15) = "CustomZulassung"
    27. .Cells(1, 16) = "ExIIC"
    28. .Cells(1, 17) = "ExIIB"
    29. .Cells(1, 18) = "Gas"
    30. .Cells(1, 19) = "Staub"
    31. .Cells(1, 20) = "GRP"
    32. .Cells(1, 21) = "Stahlblech"
    33. .Cells(1, 22) = "VA"
    34. .Cells(1, 23) = "ALU"
    35. .Cells(1, 24) = "ALU Stahlblech"
    36. .Cells(1, 25) = "Lackfarbe GRP"
    37. .Cells(1, 26) = "Lackfarbe Stahlblech"
    38. .Cells(1, 27) = "Lackfarbe VA"
    39. .Cells(1, 28) = "Lackfarbe ALU"
    40. .Cells(1, 29) = "Lackfarbe ALU Stahlblech"
    41. .Cells(1, 30) = "Schutzart"
    42. .Cells(1, 31) = "Zone"
    43. .Cells(1, 32) = "Gesamtgewicht"
    44. .Cells(1, 33) = "Listenpreis_Gesamt"
    45. .Cells(2, 33) = "0" 'Default
    46. .Cells(1, 34) = "Preisupdate"
    47. .Cells(1, 35) = "Lack GRP"
    48. .Cells(1, 36) = "Lack Stahlblech"
    49. .Cells(1, 37) = "Lack VA"
    50. .Cells(1, 38) = "Lack ALU"
    51. .Cells(1, 39) = "Lack ALU Stahlblech"
    52. .Cells(1, 40) = "Kosten_Gesamt"
    53. .Cells(2, 40) = "0" 'Default
    54. For i = 1 To DatensatzWerte + 1
    55. .Cells(3, i) = arrColumnNames(i - 1)
    56. Next
    57. Worksheet.Cells(2, 34) = DateTime.Now.ToString("dd.MM.yyyy") 'Datum der Preisaktualisierung im Angebot
    58. End With
    59. 'Speichern
    60. xlMappe.Save()
    61. End Sub


    Anschließend wird StuecklisteLaden aufgerufen, wo dann der Fehler (manchmal) entsteht

    VB.NET-Quellcode

    1. Sub StuecklisteLaden(AktivePosition As Integer)
    2. Dim Connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & (AngebotsPfad & "\" & AngebotsNummer & ".qte" & "; Extended Properties=""Excel 12.0;HDR=YES"";"))
    3. Dim Data As New OleDbDataAdapter("SELECT * FROM [" & AngebotsPositionName & "$]", Connection) 'AngebotsPositionName = "Position2"
    4. Dim i As Integer
    5. PauseEvents = True
    6. dgvStückliste.DataSource = Nothing
    7. dgvStückliste.Columns.Clear()
    8. TableStückliste.Clear() 'Public TableStückliste As New DataTable
    9. Data.Fill(TableStückliste) 'Hier entsteht der Fehler
    10. dgvStückliste.DataSource = TableStückliste
    11. ' Restlicher Code ausgeblendet
    12. End Sub


    Das ist die Fehlermeldung:

    Ein Ausnahmefehler des Typs "System.Data.OleDb.OleDbException" ist in System.Data.dll aufgetreten.

    Zusätzliche Informationen: 'Position2$' ist kein gültiger Name. Stellen Sie sicher, dass der Name nicht zu lang ist und keine ungültigen Zeichen oder Interpunktionszeichen enthält.


    Habe ich hier irgendwo einen Denkfehler oder generell einen falschen Ansatzt? ?( ?( ?(
    Lasst mich wissen, wenn noch Info fehlt.

    Vielen Dank im Voraus!!! :thumbsup:

    Gruß
    Patrick

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Yogibär“ ()