Access-Datenbank von Excel aus per VBA erzeugen
Schritt-für-Schritt-Anleitung
Um eine Access-Datenbank aus Excel per VBA zu erstellen, kannst du den folgenden Code verwenden. Dieser Code überprüft, ob die Datei bereits existiert, und erstellt eine neue Datenbank, falls nicht. Du kannst die Datenbank nach Bedarf anpassen.
Option Explicit
Const Datei As String = "C:\temp\vba_sql.mdb"
Sub in_DB_eine_Tabelle_anlegen()
Dim db As Database
Dim Antwort As Long
On Error GoTo Hell
' Wenn Datei nicht vorhanden, dann anlegen
If Dir(Datei) = "" Then
Set db = CreateDatabase(Datei, dbLangGeneral)
Else
' Wenn alte Datei vorhanden, nachfragen
Antwort = MsgBox("Soll die alte Datei:" & vbNewLine & Datei & vbNewLine & "gelöscht werden?", vbYesNo, "Datei ist schon vorhanden")
If Antwort = vbYes Then
' Alte Datei löschen
Kill Datei
' Neue Datei anlegen
Set db = CreateDatabase(Datei, dbLangGeneral)
Else
' Falls Nein angeklickt, dann aussteigen
MsgBox "Keine Änderung vorgenommen", , "Abbruch"
Exit Sub
End If
End If
' DB öffnen und Tabelle anlegen
Set db = OpenDatabase(Datei)
db.Execute ("Create table Personal (PersonalNR SMALLINT NOT NULL, Name CHAR(40), Vorname CHAR(40), Geschlecht CHAR(1), AbtNR SMALLINT, Eintritt DATE, Gehalt NUMERIC)")
MsgBox "Datenbank erfolgreich erstellt!", , Datei
Set db = Nothing
Exit Sub
Hell:
Set db = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & "Beschreibung: " & Err.Description, vbCritical, "Fehler aufgetreten"
End Sub
Häufige Fehler und Lösungen
-
Fehler 3265: "Feldname nicht gefunden": Überprüfe, ob die Spaltennamen in der SQL-Anweisung korrekt sind. Achte auf Groß- und Kleinschreibung.
-
Fehler 3343: "Ungültige Datenbankdatei": Stelle sicher, dass die Datenbankdatei im richtigen Format erstellt wurde (z.B. .mdb oder .accdb).
-
Fehler bei der Verbindung: Überprüfe, ob die nötigen Verweise auf ADO und ADOX gesetzt sind, insbesondere wenn du die Datenbank ohne Access erstellen möchtest.
Alternative Methoden
Eine Alternative zum Erstellen der Access-Datenbank besteht darin, Late Binding zu verwenden. Dies erfordert kein installiertes Access und kann so aussehen:
Sub ErstelleAccessDB()
Dim objAccess As Object
Set objAccess = CreateObject("Access.Application")
objAccess.NewCurrentDatabase "C:\temp\NeueDatenbank.mdb"
objAccess.CloseCurrentDatabase
objAccess.Quit
Set objAccess = Nothing
End Sub
Du kannst auch ADO verwenden, um eine Datenbank zu erstellen, ohne Access zu starten. Dies ist besonders nützlich, wenn du eine Access-Datenbank aus Excel erstellen möchtest, ohne dass Access auf dem Computer installiert ist.
Praktische Beispiele
-
Access-Kontaktdatenbank erstellen: Verwende die oben genannten Methoden, um eine Kontaktdatenbank zu erstellen. Du kannst Felder wie Name
, Adresse
, Telefon
hinzufügen.
-
Kundendatenbank erstellen: Ändere die SQL-Anweisung, um eine Tabelle für Kunden zu erstellen, z.B. CREATE TABLE Kunden (KundenID INT, Name VARCHAR(100), Email VARCHAR(100))
.
Tipps für Profis
-
Verwende Parameterabfragen: Um SQL-Injection zu vermeiden, solltest du immer Parameterabfragen verwenden, wenn du Daten in die Datenbank einfügen möchtest.
-
Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung in deinen VBA-Skripten, um die Anwendung robuster zu machen.
-
Datenbankdesign: Plane dein Datenbankdesign im Voraus. Überlege dir, welche Tabellen und Beziehungen du benötigst, um die Effizienz zu maximieren.
FAQ: Häufige Fragen
1. Kann ich Access-Datenbanken auch aus einer Excel-Tabelle erstellen?
Ja, du kannst die Daten aus einer Excel-Tabelle in eine Access-Datenbank importieren oder direkt eine Datenbank aus Excel erstellen.
2. Benötige ich Access, um eine Access-Datenbank zu erstellen?
Nicht unbedingt. Mit den richtigen ADO-Referenzen kannst du eine Access-Datenbank allein mit Excel und VBA erstellen, ohne dass Access installiert ist.
3. Wie kann ich eine bereits existierende Access-Datenbank anpassen?
Du kannst das ADO-Objekt verwenden, um eine Verbindung zu einer bestehenden Datenbank herzustellen und dann SQL-Anweisungen verwenden, um Änderungen vorzunehmen.