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 :
In meinem Modul 1 steht folgendes :
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:
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 !
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
- Private Sub btnBrowse_Click
- Dim diag As Office.FileDialog
- Dim item As Variant
- Set diag = Application.FileDialog(msoFileDialogFilePicker)
- diag.AllowMultiSelect = False
- diag.Title = "Bitte wählen Sie eine Excel-Datei aus"
- diag.Filters.Clear
- diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx"
- If diag.Show Then
- For Each item In diag.SelectedItems
- Me.txtFileName = item
- Next
- End If
- Dim FSO As New FileSystemObject
- If Nz(Me.txtFileName, "") = "" Then
- MsgBox "Bitte wählen Sie eine Datei aus!"
- Exit Sub
- End If
- If FSO.FileExists(Me.txtFileName) Then
- Modul1.ImportExcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName)
- Else
- MsgBox "Diese Datei wurde nicht gefunden!"
- End If
- End Sub
In meinem Modul 1 steht folgendes :
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
- Public Function ErsetzenTabelle(txtFileName As String, Dateiname As String) As Long
- ErsetzenTabelle = 0
- DoCmd.RunSQL "SELECT " & txtFileName & ".* INTO " & txtFileName & "TEMP FROM " & txtFileName & ";"
- DoCmd.RunSQL "DELETE * FROM " & txtFileName & "TEMP"
- DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, txtFileName & "TEMP", Dateiname, True
- If DCount("*", txtFileName & "TEMP") = 0 Then
- MsgBox "Die Datenherkunft beinhaltet keine Daten."
- Exit Function
- Else
- DoCmd.RunSQL "DELETE * FROM " & txtFileName
- DoCmd.RunSQL "SELECT " & txtFileName & "TEMP.* INTO " & txtFileName & " FROM " & txtFileName & "TEMP;"
- End If
- DoCmd.DeleteObject acTable, txtFileName & "TEMP"
- ErsetzenTabelle = -1
- Exit Function
- 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“ ()