Import aus Excel und Übeschreibung aktueller Datensätze

  • Access

    Import aus Excel und Übeschreibung aktueller Datensätze

    Hallo liebe Experten,

    folgende Aufgabe muss ich bewältigen : Datensätze sollen aus Excel importiert werden, sofern die Tabelle noch nicht in Access(2010) existiert wird sie neu angelegt, existiert sie jedoch schon (z.B identische Spaltennamen) soll sie mit den aktuellen Datensätzen (über den Import aus Excel) aktualisiert/überschrieben werden. Das ganze soll dann über Buttons in einem Formular laufen.
    Da meine VBA-Kenntnisse sehr begrenzt sind wende ich mich nun an Experten die mir hoffentlich weiterhelfen können.
    Den Import-Vorgang habe ich soweit schon hinbekommen :

    Quellcode

    1. Private Sub btnBrowse_Click
    2. Dim diag As Office.FileDialog
    3. Dim item As Variant
    4. Set diag = Application.FileDialog(msoFileDialogFilePicker)
    5. diag.AllowMultiSelect = False
    6. diag.Title = "Bitte wählen Sie eine Excel-Datei aus"
    7. diag.Filters.Clear
    8. diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx"
    9. If diag.Show Then
    10. For Each item In diag.SelectedItems
    11. Me.txtFileName = item
    12. Next
    13. End If
    14. Dim FSO As New FileSystemObject
    15. If Nz(Me.txtFileName, "") = "" Then
    16. MsgBox "Bitte wählen Sie eine Datei aus!"
    17. Exit Sub
    18. End If
    19. If FSO.FileExists(Me.txtFileName) Then
    20. Modul1.ImportExcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName)
    21. Else
    22. MsgBox "Diese Datei wurde nicht gefunden!"
    23. End If
    24. End Sub

    In meinem Modul 1 steht folgendes :

    Quellcode

    1. Public Sub ImportExcelSpreadsheet(fileName As String, tableName As String)
    2. On Error GoTo BadFormat
    3. DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tableName, fileName, True
    4. Exit Sub
    5. BadFormat:
    6. MsgBox "Das Format dieser Datei wird nicht unterstützt"
    7. End Sub

    Wie schaffe ich es nun über den Import aus Excel Datensätze in Access zu aktualisieren bzw. wie muss ich den Code für das Überschreiben mit meinem Import-Code verknüpfen.
    Folgende Ansätze die ich in diversen Foren gefunden habe die bislang aber nicht funktionierten:

    Quellcode

    1. Public Function ErsetzenTabelle(txtFileName As String, Dateiname As String) As Long
    2. ErsetzenTabelle = 0
    3. DoCmd.RunSQL "SELECT " & txtFileName & ".* INTO " & txtFileName & "TEMP FROM " & txtFileName & ";"
    4. DoCmd.RunSQL "DELETE * FROM " & txtFileName & "TEMP"
    5. DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, txtFileName & "TEMP", Dateiname, True
    6. If DCount("*", txtFileName & "TEMP") = 0 Then
    7. MsgBox "Die Datenherkunft beinhaltet keine Daten."
    8. Exit Function
    9. Else
    10. DoCmd.RunSQL "DELETE * FROM " & txtFileName
    11. DoCmd.RunSQL "SELECT " & txtFileName & "TEMP.* INTO " & txtFileName & " FROM " & txtFileName & "TEMP;"
    12. End If
    13. DoCmd.DeleteObject acTable, txtFileName & "TEMP"
    14. ErsetzenTabelle = -1
    15. Exit Function
    16. End Function

    Die Syntax von SQL-Statements habe ich noch nicht durchschaut weshalb ich das noch nicht so gut an meinen Code anpassen bzw. selbst schreiben konnte.
    Wie würdet ihr das lösen? Am besten man kann noch auswählen welche AccessTabelle man denn überschreiben möchte.
    Evtl. hat hier jemand genau so einen Code schon mal geschrieben und könnte diesen zu Verfügung stellen?

    Ich wäre sehr dankbar wenn man mir irgendwie weiterhelfen kann, seien es auch nur Stichwörter, Ansatzvorschläge oder Beispielcode.

    Viele Grüße !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fmswolfsang“ ()