Einzelne Excelfelder an Access-Tabelle anfügen
#1
Hallo liebes Forum,

ich würde gerne einzelne Excel-Datenfelder per VBA nach Access übertragen.
Dabei habe ich schon sehr viele Internet-Beispiele durchforstet, aber leider hat nichts geklappt.
Wobei das aber auch an meinen mäßigen VBA-Kenntnissen liegen wird.

Ich habe bereits ein sehr einfach gehaltenes Tutorial-Beispiel, welches  manuell geschriebene Daten nach Access überträgt.

Sieht so aus (Verweis auf ActiveX Data Objects 6.1 gesetzt):

Code:
Sub Aktionsabfrage()

Dim cn As ADODB.Connection
Dim sql As String
Dim Anzahl As Integer


On Error GoTo Fehler
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\firma.accdb"
cn.Open


sql = "INSERT INTO personen (name,vorname,personalnummer,gehalt,geburtstag) VALUES ('Müller','Gerd',4711,2900,'12.08.1976')"


MsgBox sql
cn.Execute sql, Anzahl

cn.Close

MsgBox "Anzahl geändert: " & Anzahl

Exit Sub

Fehler:
   MsgBox Err.Description


End Sub

...und ich würde jetzt ganz gerne, einzelne Felder aus der Exceltabelle nach Access übertragen.
Also quasi VALUES (range("A2:F2")) --> Access-Tabelle.

 Kann mir da vielleicht jemand weiterhelfen?

Gruß
Alex
Top
#2
Ich habe Dir hier mal eine Beispiel-Excelmappe eingestellt.

Versuche mal den Code nazuvollziehen und baue eine Access-Datei auf in der es eine Tabelle mit dem Namen "PERSON" gibt und in der es diese 5 Felder mit den entsprechenden Feldtypen gibt:

1. Die Felder Name,Vorname,PNR sind vom Feldtyp varchar bzw. nvarchar 'habe ich jetzt einfach mal so angenommen
2. Das Feld GEHALT ist vom Feldtyp FLOAT, bzw. Double
3. Das Feld GEBURTSDAUM ist vom Feldtyp DATUM

Zudem muss diese Access-Datei in einem Verzeichnis abgespeichert werden und diesen Pfad inkl. Dateinamen musst Du im Code

PfadZurAccessDatei =

angeben. Befindet sich diese Datei z.B. auf dem laufwerk C: und dort im Unterordner "Daten" und heißt die AccessDatei "PERSONENDB.ACCDB", dann würde der Pfad so lauten:

PfadZurAccessDatei ="C:\DATEN\PERSONENDB.ACCDB"

Leider kann ich den Code nicht testen in Ermangelung von Access auf diesem Rechner an dem ich gerade sitzen. Evtl. könntest Du eine Access-Datei erstellen und diese hier hochladen, dann könnte man das ganze noch etwas testen.

Excel_ueber_ADO_in_Access_Daten_speichern-002.xlsm ist die korrigierte Fassung. Da war noch ein Fehler im Code...


Angehängte Dateien
.xlsm   Excel_ueber_ADO_in_Access_Daten_speichern.xlsm (Größe: 20,09 KB / Downloads: 1)
.xlsm   Excel_ueber_ADO_in_Access_Daten_speichern-002.xlsm (Größe: 20,1 KB / Downloads: 3)
Top
#3
Thumbs Up 
Danke für die prompte Antwort JereMaia.
Ich werde mir das reinziehn, sobald ich etwas Luft hab.
Vielen Dank und LG!!!
Top
#4
Ich habe ein paar Flüchtigkeitsfehler ausgebessert, dann hatt's funktioniert.
!!!BESTEN DANK NOCHMAL!!!  :05:
Top
#5
Super!
Top
#6
Oder:


PHP-Code:
Sub M_snb()
    sn Sheet1.Cells(6,1).Resize(, 5)
    c00 "INSERT INTO personen (name,vorname,personalnummer,gehalt,geburtstag) VALUES ('"

    With CreateObject("ADODB.Connection")
        .Provider "Microsoft.ACE.OLEDB.12.0"
        .connectionstring ThisWorkbook.Path "\firma.accdb"
        .Open
        
.Execute c00 Join(Application.Index(sn0), "','") & "')"
    End With
End Sub 
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste