Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Exceldaten nach Access senden.

Exceldaten nach Access senden.
05.02.2009 11:41:00
Adi
Wer kann helfen?
es gibt eine Access-Datenbank und eine Excel-Datenbank
dort stehen die Mitglieder des KGV-Vereins.
In der Excel Mitglieder-Datenbank werden ab und zu Adressen verändert,
oder ganz neue kommen dazu.
In der Access Datenbank ändere ich dann die Daten per Hand, aber so,
dass die alte Adresse bestehen bleibt (nicht überschrieben wird)
ich kopiere den Datensatz
der sich ändern soll ans Ende und korrigiere dort die neue Anschrift.
Zweck der Sache ist, ich will alle Änderungen behalten.
Nun meine Frage: Kann man das per Makro erledigen lassen,
eine Antwort ja oder nein würde mir erst mal genügen,
danach käme die Frage wie geht das?
Gruß Adi
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Exceldaten nach Access senden.
05.02.2009 12:31:24
selli
hallo adi,
hier wäre der ansatz in access sicherlich besser. da hast du doch die möglichkeit eine exceltabelle zu verknüpfen und dir die daten über eine definierte abfrage "rauszusaugen".
das sollte doch deinen vorstellungen entsprechen.
gruß selli
AW: Exceldaten nach Access senden.
05.02.2009 21:23:44
Adi
hallo selli,
ich möchte doch die Daten von Excel nach Access senden.
ich habe im Archiv ein Makro gefunden, aber es läuft nicht, beim Start
kommen direkt Fehlermeldungen. Kannst Du mal den Grund finden?
' Anbei ein Quellcode, mit dem Du Excel-Daten in eine Access-Tabelle schreiben kannst.
' Aktiviere vorher die Bibliothek ADO unter Extras/Verweise.

Sub DatenübernahmeNachAccess()           'Beim Start kommen diese Meldungen
Dim ADOC As New ADODB.Connection      'Benutzerdefinierter Typ nicht definiert
Dim DBS As New ADODB.Recordset           'Benutzerdefinierter Typ nicht definiert
ADOC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\KGV\Mitglieder.mdb;"
DBS.Open "Mitglieder", ADOC, adOpenKeyset, _
adLockOptimistic
Sheets("Mitglieder").Activate     'Exceldatei
Range("A2").Select
On Error GoTo fehler
Do Until ActiveCell.Value = ""
DBS.AddNew
DBS!Garten_Nr = ActiveCell.Value
DBS!Anrede = ActiveCell.Offset(0, 1).Value
DBS!Vorname = ActiveCell.Offset(0, 2).Value
DBS!Nachname = ActiveCell.Offset(0, 3).Value
DBS!Strasse = ActiveCell.Offset(0, 4).Value
DBS!Ort = ActiveCell.Offset(0, 5).Value
DBS!Telefon = ActiveCell.Offset(0, 6).Value
DBS!Geburtstag = ActiveCell.Offset(0, 7).Value
DBS.Update
ActiveCell.Offset(1, 0).Select
Loop
DBS.Close
ADOC.Close
Set ADOC = Nothing
Set DBS = Nothing
Exit Sub
fehler:
MsgBox "Es trat ein Fehler auf!"
DBS.Close
ADOC.Close
Set ADOC = Nothing
Set DBS = Nothing
End Sub


Anzeige
AW: Exceldaten nach Access senden.
06.02.2009 09:32:00
Oberschlumpf
Hi Selli
Hast du im VBA-Editor den Verweis auf
Microsoft ActiveX Data Objects 2.0 Library
gesetzt?
Ciao
Thorsten
AW: Exceldaten nach Access senden.
06.02.2009 20:28:11
Adi
Hallo Selli,
im VBA-Editor den Verweis habe ich jetzt erst in Betrieb
(Microsoft ActiveX Data Objects 2.8 Library) genommen
und das Makro läuft etwas weiter, bis an der Stelle fehler:
die MsgBox meldet sich.
Jetzt weis ich nicht mehr was ich machen soll. In der vierten Zeile von oben
da steht ja am Ende C:\KGV\Mitglieder.mdb; ist das richtig, oder muß
da die Exceldatei stehen.
Die Exceldatei Mitglieder.xls ist genau wie die Accessdatei Mitglieder aufgebaut,
auch die Tabellennamen heißen Mitglieder ist das O. K.
Gruß Adi
Anzeige
AW: Exceldaten nach Access senden.
07.02.2009 12:34:13
Oberschlumpf
Hi Adi
(auch ICH bin NICHT Selli)
Ich hab auch mal sowohl eine Access-Datenbank als auch eine Excel-Datei erstellt - genau so, wie im Code "vorgegeben".
Und nach Start des Makros wurden die Daten aus A2-H2 als neuen Datensatz in die Access-DB übertragen.
Damit du weißt, in welcher Codezeile der Fehler auftritt, musstdu die On Error-Zeile löschen, oder deaktivieren.
Nun erscheint bei dem Fehler die Exceleigene Fehlermeldung, die dir die Möglichkeit zum Debuggen gibt - da kannst du dann auch sehen, welche Codezeile den Fehler verursacht.
In der 4. Zeile von oben muss der korrekte Pfad und Dateiname für deine Accessdatei stehen.
Eine Angabe zur Exceldatei ist an dieser Stelle falsch.
Hier noch mal ne Zusammenfassung:
1. In der 4. Zeile von oben muss der richtige Pfad+Name zur Accessdatei stehen
2. In der 7. Zeile von oben muss der richtige Sheetname stehen, aus dem die Daten zur Access-DB übertragen werden sollen
3. In den Zeilen 12 - 19 müssen die richtigen Feldnamen eingetragen werden, die in der Access-DB verwendet werden
Wenn du also Punkt 1-3 beachtest und die richtigen Verweise gesetzt hast, müsste es eigtl funktionieren (tut es bei mir ja auch)
Bei dir nun auch?
Ciao
Thorsten
Anzeige
AW: Excel nach Access übertragen .
07.02.2009 15:48:52
Adi
Hallo Thorsten,
es klappt wunderbar, dank Deiner Vorschläge. Nun, das war erst eine Testversion,
jetzt gehts weiter. Meine Idee ist, wenn in der Exceldatei eine Anschrift oder irgend etwas
geändert wird, dann möchte ich nicht die komplette Datenbank nach Access schicken,
sondern die geänderte Zeile soll in der Accessdatenbank am Ende dazu geschrieben
werden. Dadurch werden alle Änderungen gespeichert.
Ob das geht, ich frage Dich?
Es wäre schön wenn ich eine Antwort bekomme.
Gruß Adi
Anzeige
andere wissen vielleicht mehr
07.02.2009 16:46:23
Oberschlumpf
Hi Adi
Sorry, so gut kenne ich mich in der Programmierung von XL - Access und umgekehrt nicht aus.
Sinnvoller als in XL geänderte Daten einfach in Access hinzuzufügen, find ich aber, dass es besser ist, in Access den schon bestehenden Datensatz mit den Daten aus XL zu aktualisieren.
Wenn man es so macht, wie du beschreibst, gibt es in Access bald viele ungültige Adressen, weil ja geändert.
Das ist aber nur meine Meinung. Du weißt am besten, wie du dein Ziel erreichst.
Ciao & viel Erfolg
Thorsten
Anzeige
AW: Excel nach Access übertragen .
07.02.2009 17:08:00
Tino
Hallo,
kannst Du mal eine abgespeckte Version der Exceldatei und
der Access Datenbank hochladen? Am besten in einem .zip Archiv.
Gruß Tino
AW: Excel nach Access übertragen .
07.02.2009 20:10:46
Adi
Hallo Tino,
schön daß du helfen möchtest, Daten schicke ich gepackt mit.
Thorsten schrieb, wenn ich es so mache wie beschrieben,
dann gebe es viele falsche Adressen, das stimmt, es soll auch
so sein, damit behalte ich alle Änderungen.
Gruß Adi
https://www.herber.de/bbs/user/59204.zip
Anzeige
AW: Excel nach Access übertragen .
07.02.2009 21:22:58
Tino
Hallo,
habe dies so gelöst,
ich habe eine Dummy Tabelle eingebaut wo eine Kopie der Tabelle erstellt wird womit kurz vor der Übertragung alle Änderungen festgestellt werden und nur diese werden übertragen.
Die Dummy Tabelle kann auch ausgeblendet werden.
Den Pfad für die *.mdb habe ich zu Testzwecken geändert.
Auch die Schleife habe ich ein wenig abgeändert.
Teste mal, vielleicht funktioniert es ja.
https://www.herber.de/bbs/user/59208.zip
Gruß Tino
Anzeige
AW: Jetzt ist alles O. K. Danke!
08.02.2009 13:32:59
Adi
Hallo Tino,
ich muß Dir ein Lob aussprechen, es ist so, wie ich es haben wollte.
Jetzt wird nur übertragen, was geändert wurde.
Ich bin begeistert, wie schnell man hier geholfen wird.
Gruß Adi
Anzeige
AW: Exceldaten nach Access senden.
06.02.2009 09:43:00
Oberschlumpf
ich meinte Hallo Adi...nich Selli...sorry :)
;
Anzeige
Anzeige

Infobox / Tutorial

Exceldaten in Access übertragen: Ein umfassender Leitfaden


Schritt-für-Schritt-Anleitung

Um Access-Daten in eine Excel-Tabelle zu schreiben, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Verweise setzen: Gehe zu Extras > Verweise und aktiviere die Microsoft ActiveX Data Objects 2.8 Library.

  3. Makro erstellen: Füge den folgenden Code in ein neues Modul ein:

    Sub DatenübernahmeNachAccess()
       Dim ADOC As New ADODB.Connection
       Dim DBS As New ADODB.Recordset
    
       ADOC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\KGV\Mitglieder.mdb;"
       DBS.Open "Mitglieder", ADOC, adOpenKeyset, adLockOptimistic
    
       Sheets("Mitglieder").Activate
       Range("A2").Select
    
       On Error GoTo fehler
       Do Until ActiveCell.Value = ""
           DBS.AddNew
           DBS!Garten_Nr = ActiveCell.Value
           DBS!Anrede = ActiveCell.Offset(0, 1).Value
           DBS!Vorname = ActiveCell.Offset(0, 2).Value
           DBS!Nachname = ActiveCell.Offset(0, 3).Value
           DBS!Strasse = ActiveCell.Offset(0, 4).Value
           DBS!Ort = ActiveCell.Offset(0, 5).Value
           DBS!Telefon = ActiveCell.Offset(0, 6).Value
           DBS!Geburtstag = ActiveCell.Offset(0, 7).Value
           DBS.Update
           ActiveCell.Offset(1, 0).Select
       Loop
    
       DBS.Close
       ADOC.Close
       Set ADOC = Nothing
       Set DBS = Nothing
       Exit Sub
    fehler:
       MsgBox "Es trat ein Fehler auf!"
       DBS.Close
       ADOC.Close
       Set ADOC = Nothing
       Set DBS = Nothing
    End Sub
  4. Pfad anpassen: Ändere den Pfad C:\KGV\Mitglieder.mdb zu dem Speicherort Deiner Access-Datenbank.

  5. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Benutzerdefinierter Typ nicht definiert: Stelle sicher, dass Du die richtige Bibliothek in den Verweisen aktiviert hast.
  • Fehler bei der Verbindung: Überprüfe den Pfad zur Access-Datenbank. Achte darauf, dass der Dateiname und die Erweiterung korrekt sind.
  • Fehlerhafte Feldnamen: Vergewissere Dich, dass die Feldnamen in der Access-Datenbank genau mit denen im VBA-Code übereinstimmen.

Alternative Methoden

Falls Du eine andere Methode zur Übertragung von Excel-Daten nach Access in Betracht ziehst, kannst Du:

  1. Daten verknüpfen: In Access kannst Du eine Excel-Tabelle verknüpfen, um die Daten direkt zu bearbeiten.
  2. Abfragen verwenden: Erstelle in Access eine Abfrage, die die benötigten Daten aus der Excel-Tabelle abruft.

Praktische Beispiele

  • Daten aktualisieren: Um nur die geänderten Daten zu übertragen, kannst Du eine Dummy-Tabelle in Excel erstellen, die vor der Übertragung alle Änderungen festhält.
  • Fehlerbehebung: Wenn das Makro nicht wie erwartet funktioniert, teste es ohne die On Error GoTo-Zeile, um spezifische Fehlermeldungen zu erhalten.

Tipps für Profis

  • Debugging: Nutze den Debugger im VBA-Editor, um Fehlerquellen schnell zu identifizieren.
  • Optimierung: Verwende Batch-Verarbeitung, um große Datenmengen effizienter zu übertragen.
  • Dokumentation: Halte Deine Makros gut dokumentiert, um die Wartung und zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur geänderte Daten übertragen werden?
Du kannst eine Dummy-Tabelle verwenden, um vorherige Daten zu speichern und nur die Änderungen zu übertragen.

2. Welche Excel-Version benötige ich für das VBA-Skript?
Das Skript sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, insbesondere Excel 2010 und höher.

3. Was mache ich, wenn ich weiterhin Fehlermeldungen erhalte?
Überprüfe alle Verweise im VBA-Editor, stelle sicher, dass Pfade korrekt sind und debugge die spezifische Zeile, die den Fehler verursacht.

4. Kann ich die Access-Datenbank auch direkt aus Access aktualisieren?
Ja, das ist oft effizienter, da Access eine bessere Verwaltung von Datenbankoperationen ermöglicht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige