Office: per Makro Daten aus Excel in Access einfügen

Helfe beim Thema per Makro Daten aus Excel in Access einfügen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo alle zusammen, ich habe folgendes Problem. Ich habe eine ziemlich große Access-Datenbank, die kontinuierlich aktualisiert wird. Die... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von loswollos, 4. März 2009.

  1. per Makro Daten aus Excel in Access einfügen


    Hallo alle zusammen,

    ich habe folgendes Problem. Ich habe eine ziemlich große Access-Datenbank, die kontinuierlich aktualisiert wird. Die Aktualisierungen kommen allerdings per Excel.
    Was ich machen will: Ein Makro schreiben, dass die Einträge von Excel in die Datenbank einfügt. Hier sollen aber nicht gleich die kompletten Datensätze kopiert werden, sondern nur die Einträge aus Excel. Angenommen ich habe einen Datensatz in Access und bekomme jetzt per Excel eine Aktualisierung (z.b. eine neue Adresse), dann soll die kopiert werden, die restlichen Access-Einträge des Datensatzes aber nicht geändert werden.
    Es geht also im Prinzip darum, einzelne (nichtleere) Zellen aus Excel anzuwählen (das ist kein Problem) und dann in der Datenbank ebenfalls einzelne Zellen anzuwählen und dort etwas einzutragen.
    Zur Info: Jeder Datensatz in Access hat eine eineindeutige Nummer, die auch in der Excel-Aktualisierung angegeben ist.

    Meine Frage: Kann man per Makro einzelne Zellen in Access anwählen und editieren und wenn ja, wie geht das? Meine Access-vba-Kenntnisse sind eher mangelhaft, ich schaffe es noch nichtmal, die Datenbank per Makro zu öffnen *frown.gif*

    Vielen Dank schonmal!

    :)
     
    loswollos, 4. März 2009
    #1
  2. Anmerkung: In Access- (und allgemein Datenbank-) Tabellen gibt es keine Zellen, sondern Felder und Datensätze.

    Für einen allgemeinen Zugriff auf eine Accesstabelle kannst Du Dir dieses ansehen:
    http://www.ms-office-forum.net/forum...php?t=247042#7
    Du brauchst dann aber statt dem Anfügen von Datensätzen ein Aktualisieren.
    Das genaue Verfahren Deines Aktualisierens habe ich noch nicht verstanden, aber mittels Variante 2 (SQL) könnte man die ganzen Tabellen auf einen Schlag abgleichen.
     
    ebs17, 6. März 2009
    #2
  3. Hi, das ging ja schnell *Smilie

    Den ganzen Datensatz aus Excel kopieren ist keine Option, da ich teilweise nur Aktualisierungen für einzelne Felder erhalte.
    Z.B. ich habe in Access jede Menge Datensätze mit Adressen und Telefonnummern und einer Schlüsselnummer. Jetzt bekomme ich eine Exceldatei, wo bspw. nur die Schlüsselnummer und die geänderten Telefonnummern stehen, aber nicht die anderen Daten. Wenn ich also den kompletten Datensatz kopieren würde, hab ich zwar die neue Nummer in der Datenbank, aber leider wären dann die anderen Felder (leer) überschrieben.

    Daher muss ich irgendwie die einzelnen Felder in Access anwählen und überschreiben, ohne den Rest der jeweiligen Datensätze zu ändern.
     
    loswollos, 6. März 2009
    #3
  4. per Makro Daten aus Excel in Access einfügen

    Deine Exceltabelle enthält also nur die Datensätze, die zu aktualisieren sind? Super.

    Wieviele Telefonnummern gibt es pro Datensatz, und werden alle (vollständig) ersetzt?
    In einer Aktualisierungsabfrage werden nur die Felder verwendet, die man explizit einsetzt. Notfalls müsste man eine Abfrage pro Feld absetzen.
     
    ebs17, 6. März 2009
    #4
  5. nein, es werden immer nur ein paar Nummern ersetzt. Manchmal auch die Adresse oder andere Angaben, also nicht nur die eine (Telefon-)Spalte. Ich bekomme also immer eine Excel-Datei, in der irgendwelche Änderungen stehen, die dann in die DB übertragen werden müssen.
     
    loswollos, 6. März 2009
    #5
  6. Das wäre ein Beispiel für die Aktualisierung eines Feldes. Um alle zu berücksichtigen, bräuchte man eine saubere Zuordnung Excelspalte-Tabellenfeld.
    Code:
    Statt der verwendeten Schleife könnte man auch eine richtige Aktualisierungsabfrage verwenden. Da ich noch lernend bin, krieg ich das aus dem Kopf nicht hin.

    Wenn Du mal (mit wenigen und unkritischen, aber aussagefähigen Daten) eine Arbeitsmappe und eine Acc2000-MDB mit der Zieltabelle bereitstellst, könnte man das etwas vervollständigen.

    Anmerkung: Die Aktualisierung könnte auch aus der Accessanwendung heraus vorgenommen werden, was insofern sinnvoll ist, da neue Exceldateien mit neuen Daten wohl nicht das benötigte Makro enthalten.
     
    ebs17, 6. März 2009
    #6
  7. Vielen Dank, ich probiere das mal aus. Allerdings erst am Montag, da ich das Wochenende unterwegs bin.
    Gebe dann bescheid, wie es aussieht.
    Gruß und schönes Wochenende
     
    loswollos, 6. März 2009
    #7
  8. per Makro Daten aus Excel in Access einfügen

    hhm, irgendwie funktioniert das nicht. Da kommt die Meldung Anwendungs- oder objektdefinierter Fehler.
    Weiß nicht, ob ich alles richtig eingetragen habe.
    Hier ein Beispiel, wie die Tabelle aussieht:
    Access: DB-Name: Daten; Tabellenname: a1_Dat

    IDNR______Telefon______Status______Name
    1_________12345_________2_________Hans
    2_________55555_________1_________Peter
    3_________44444_________0_________Jan
    4_________33333_________4_________Anna
    5_________22222_________3_________Horst
    6_________11111_________1_________Pit

    Excel: Name: Daten_akt; Sheetname: a1_Dat_akt

    IDNR______Telefon_n_____Status_n_____Name_N
    2 ________________________2_______________
    3_________444555___________________________
    5_________222000__________4_______________
    6___________________________________Pit Hans


    Das ist jetzt natürlich ein fiktives Beispiel... Man sieht, dass in der Excel-Datei nur die IDNR vorkommen, bei denen es Veränderungen gab, und auch nur die jeweiligen Veränderungen dokumentiert sind, alles andere bleibt gleich...
     
    loswollos, 8. März 2009
    #8
  9. Ich nehme mir nicht die Zeit, ein Beispiel nachzubauen, dass Du liefern könntest. Meine Annahmen könnten an der Realität bei Dir vorbeigehen. Ob Du dann mit "nur so einem Beispiel" umgehen könntest, weiß ich nicht.
    Irgendwie könnte man sich auch konkret ausdrücken, z.B. die Zeile nennen, die der Debugger farbig markiert.
     
    ebs17, 9. März 2009
    #9
  10. So, habe jetzt mal eine DB und ein Excel-Dokument erstellt, was in etwas so aussieht wie das Original. Im Original sind natürlich deutlcih mehr Spalten vorhanden, außerdem gibt es noch weitere Tabellen mit Verknüpfungen usw.

    Ich habe schonmal versucht, auf einzelne Zellen zuzugreifen. Irgendwie schaffe ich das aber nur in der ersten Zeile (z.B.: Wenn ID=... dann ändere das Feld der Spalte ...). Ich weiß nicht, wie ich auf andere Datensätze zugreifen kann. Hier schonmal der Code, was das eben benannte betrifft:



    Dim db As DAO.Database
    Dim ws As Worksheet
    Dim i As Long

    Set db = OpenDatabase("C:\Dokumente und Einstellungen\Desktop\Daten.mdb")
    Set rs = db.OpenRecordset("A1_DAT", dbOpenTable, dbConsistent)
    Set ws = ActiveWorkbook.Worksheets("a1_DAT_akt")

    i = 1 'nur als Beispiel, Werte werden vorher noch per Makro definiert
    x = 4 'nur als Beispiel, Werte werden vorher noch per Makro definiert

    rs.Edit
    If rs.Fields("IDNR") = i Then
    rs.Fields("Status").Value = x
    rs.Update
    rs.MoveNext
    End If
     
    loswollos, 9. März 2009
    #10
  11. Hallo loswollos,

    Dir ist schon bewusst, dass Du hier etwas anderes ausführst als ich oben beschrieben habe. Da mir der gezeigte Ansatz als ungeeignet erscheint, gehe ich nicht näher darauf ein.
    Fehler: Fehlende Deklaration des Recordsetobjektes (Dim rs As DAO.Recordset)
    Wenn Du jede "Zelle" einzeln prüfen und ggf. überschreiben willst, dann darfst Du Dich über mangelnde Performance bei vielen Datensätzen mit dann noch etlichen Feldern nicht wundern.

    Ich verfolge hier einen anderen Ansatz: Eine Aktualisierungsabfrage (SQL) pro Feld. Sind mehrere Felder zu aktualisieren, wären also die letzten beiden Anweisungen sinngemäß zu wiederholen (die Feldbezeichnungen habe ich farbig herausgestellt).
    Code:
     
  12. Super, das scheint zu funktionieren. Kann man auch auf die verschiedenen Spalten anwenden, sehr schön.
    Ich hoffe das funktioniert auch bei mehreren tausend (Access-)Einträgen... :-)
    Vielen Dank für die Hilfe!
    Gruß aus Köln!
     
    loswollos, 9. März 2009
    #12
  13. per Makro Daten aus Excel in Access einfügen

    Für eine SQL-Anweisung ist das Verarbeiten von vielen Einträgen (Massendatenverarbeitung) das tägliche Brot.

    In Hinsicht der Performance solltest Du dem Tabellenfeld IDNR in Access einen Index gönnen.
     
  14. Hi,

    ein Problem taucht noch auf: Wenn ich eine Postleitzahl, die mit 0 beginnt, übertragen will, wird die nur ohne die 0 übertragen. In der Excel-Datei ist sie als Sonderformat Plz definiert, geht aber auch nicht, wenn ich das auf Text umstelle oder als Standard mit ' vor der 0. In Access ist die Spalte als Memo definiert, habe versucht, das auf Text umzustellen, dann geht es aber auch nicht.
    Auch wenn ich sowohl die Excel- als auch die Access-Spalte als Text definiere, verschwindet die Null. Seltsamerweise habe ich diese Problem nicht mit Telefonnummern (auch wenn diese zusammengeschrieben sind, ohne Sonderzeichen), die auch als Text definiert sind.

    Irgendeine Idee, woran das liegen könnte? Oder was man da machen kann?
     
    loswollos, 10. März 2009
    #14
  15. Hier scheint es sich um ein Datentypproblem zu handeln (eine Datenbank ist da etwas restriktiver). Ein Format ist eine Darstellungsweise und etwas anderes wie der Datentyp und der innere Wert.

    So sollte es eigentlich gehen:
    Datentyp Access-Feld: Text (die max. 255 Zeichen sollten ausreichen für eine PLZ)
    Code:
     
Thema:

per Makro Daten aus Excel in Access einfügen

Die Seite wird geladen...
  1. per Makro Daten aus Excel in Access einfügen - Similar Threads - Makro Daten Excel

  2. VBA Makro Daten kopieren

    in Microsoft Excel Hilfe
    VBA Makro Daten kopieren: Hi zusammen, ich bräuchte eure Hilfe denn aktuell bin ich am verzweifeln: Ich brauche ein Makro für das deutsche Excel. Es gibt 2 verschiedene Arbeitsmappen mit jeweils einem aktiven...
  3. Excel VBA / Daten kopieren wenn Liste auf x steht.

    in Microsoft Excel Hilfe
    Excel VBA / Daten kopieren wenn Liste auf x steht.: Hallo zusammen, ich habe ein PowerQuery, welches ich ca. 2 mal im Monat aktualisiere. Aus dem Query möchte ich gerne die Daten per Makro in ein anderes Arbeitsblatt kopieren. Dabei möchte ich...
  4. CSV-Daten per Makro einbinden - manuelle Wahl der Quelldatei

    in Microsoft Excel Hilfe
    CSV-Daten per Makro einbinden - manuelle Wahl der Quelldatei: Liebe Excel-Gemeinde, ich möchte CSV-Daten in eine bereits geöffnete Arbeitsmappe laden. Sie sollen nach jedem Laden eines Datensatzes auf einem anderen Arbeitsblatt dargestellt werden, das den...
  5. Geschlossene Datei Makro für Daten entziehen

    in Microsoft Excel Hilfe
    Geschlossene Datei Makro für Daten entziehen: Liebes Forum, Ich bin schon lange dabei eine Makro-Lösung für meine Datei zu finden, doch leider gelingt es mir einfach nicht - Ich hoffe ihr könnt mir helfen: Die Zieldatei soll die Daten...
  6. Makro/VBA Daten aus andere Mappe importiren und Formel anwenden

    in Microsoft Excel Hilfe
    Makro/VBA Daten aus andere Mappe importiren und Formel anwenden: Hallo, als erstes: ich habe keine Ahnung von Makros bzw deren Programmierung. Habe mir bisher beholfen mir Fragmente aus anderen Makros zu kopieren und mich versucht in letzten 48 Stunden ein...
  7. Dateiname in Zellen abspeichern, automatisiert

    in Microsoft Excel Hilfe
    Dateiname in Zellen abspeichern, automatisiert: Schönen guten Tag, ich habe aus einer Messreihe mehrere CSV-Dateien erzeugt, die folgende Struktur besitzen, siehe Ausschnitt: [ATTACH] Die ersten vier Spalten sind jeweils mit Werten gefüllt...
  8. Excel 2010 Externe Daten Quellen über VBA Makro aktualisieren

    in Microsoft Excel Hilfe
    Excel 2010 Externe Daten Quellen über VBA Makro aktualisieren: Hallo zusammen, ich habe ein kleines Problem mit dem importieren von Daten aus einer .csv Datei. Mit dem Marko: Sub Daten_importieren() ' ' Daten_importieren Makro '...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden