Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Datenbank füllen

Betrifft: Datenbank füllen von: Michael
Geschrieben am: 14.08.2014 11:39:34

Moin zusammen,

ich habe für meine Abteilung eine Access-Datenbank (Office 2010) angelegt, in der meine Kollegen Grunddaten ihres Arbeitsbereiche einbringen müssen.

Nun habe ich mich auf die Such nach Programmbeispielen begeben, da meine VBA Literatur (Steinzeit;-)), nichts dergleichen her gibt. Sieht man mal von der Erstellung prähistorischer SEQ/DAT Dateien ab.

Bis dato habe ich folgendes gefunden und von anderen Demos abgeleitet, aber nicht unbedingt verstanden ...

Sub Datenbank_füllen()
    Dim db As Object
    Dim i As Integer
    Dim intro As String
    Dim Tabelle, VarList, TaName
    
    Set db = CreateObject("Access.Application")
    
    TaName = "Arbeitsdaten" 
    
    db.OpenCurrentDatabase ("?:\???\???\???\???\Arbeitsdaten.accdb")'Speicherort Server
    
    On Error GoTo Fehler
    
    Worksheets("Tabelle2").Activate
        
        For i = 2 To 5000
            
        VarList = " Values (" & "'" & Sheets("Tabelle2").Cells(i, 1) & "','" & Sheets("Tabelle2" _
).Cells(i, 2) & "','" & Sheets("Tabelle2").Cells(i, 3) & "','" & Sheets("Tabelle2").Cells(i, 4) & "','" & Sheets("Tabelle2").Cells(i, 5) & "','" & Sheets("Tabelle2").Cells(i, 6) & "','" & Sheets("Tabelle2").Cells(i, 7) & "','" & Sheets("Tabelle2").Cells(i, 8) & "')"

intro = "Insert into " & "Arbeitsdaten" & Datensatz & VarList'Datensatz im separatem Modul  _
deklariert
Next i
TB.Execute intro

TB.Close
db.CloseCurrentDatabase
    
Fehler:
    MsgBox (Err.Description)
End Sub

Meine Frage nun, wie kann ich die aktuelle Datansatzanzahl herausfinden?
Um eine Aktualisierung der vorhandenen Daten zu ermöglichen (Primärschlüssel = lfd Nr.) muß ein Abgleich erfolgen. Die mir bekannten Varianten von put#, write# gibts ja wohl nicht mehr;-(

  

Betrifft: AW: Datenbank füllen von: fcs
Geschrieben am: 18.08.2014 00:53:14

Hallo Michael,

warum willst du dich denn mit VBA rumplagen?

Üblicherweise erstellt man in ACCESS eine oder auch mehrere Eingabemasken.
Im Idealfall machen dann alle Beteiligten machen ihre Eingaben dann direkt in der Datenbank.

Falls eine dezentrale Dateneingabe nicht möglich ist oder nicht möglich sein soll, dann ist evtl. der Export/Import der Daten via Exceldateien eine Alternative.
D.h. Es werden per Datenexport leere oder teilweise ausgefüllte Exceldateien an die Mitarbeiter verteilt. Die Rückläufer werden dann reimportiert, evtl. macht es Sinn, die Rückläufer in einer Exceldatei zu konsolidieren und dann in ACCESS zu reimportieren.
In ACCESS gibt es ja verschiedene Varianten von Importen (Tabelle erstellen, Daten anfügen etc).

Wenn du tatsächlich den Datenabgleich zwischen einer Exceltabelle und einer Datentabelle in einer ACCESS-Datenbank per VBA-Makros umsetzen willst, dann musst du dich schon tiefer in die VBA-Syntax der verschiedenen Methoden und Eigenschaften von ACCESS und Excel begeben. Mit VBA-Basiskenntnisse wird es da schwierig.
Bei der VBA-Programmierung unter Excel solltest du dann unbedingt im VBA-Editor für die Datei unter Extras-Verweise den Verweis auf die Microsoft Access Object Library setzen.
Wenn du dann für die Access-Objekte auch die Variablen entsprechend deklarierst, erleichterst du dir die Programmierung.

Wahrscheinlich wird das Ganze auch einfacher, wenn du die Exceldaten in eine leere Tabelle in ACCESS importierst und dann den VBA-gestützten Datenvergleich innerhalb von ACCESS durchführst, dann brauchst du dich nicht mit 2 VBA-Welten rumplagen, sondern bewegst dich nur in einer VBA-Umgebung -wenn auch in einer im Moment weitgehend unbekannten.

Gruß
Franz


 

Beiträge aus den Excel-Beispielen zum Thema "Datenbank füllen"