Hallo Stefan,
wie Ulrich schon bemerkte, fehlt m.E. die Benutzung des Recordsets. Ohne es jetzt getestet zu haben, versuch es mal mit meiner Ergänzung als Anregung. Meine Access-Aktivitäten sind leider schon lange her.
Im zweiten Sub ist, alternativ auch eine andere Methode um Daten nach Access zu bekommen. Allerdings aus meiner Bastelkiste und nicht an Deine Bedürfisse angepasst. Her werden die Daten peu a peu per VBA in die Tabelle geschafft....
Private Sub cmd_einlesen_Click()
Dim strDB As String
Dim strCon As String
Dim SQL As String
Dim objCon As Object
Dim objRst As Object
strDB = ThisWorkbook.Path & "\Test_Datenbank.accdb"
Set objCon = CreateObject("ADODB.CONNECTION")
Set objRst = CreateObject("ADODB.Recordset")
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDB & _
";Persist Security Info=False;"
objCon.Open strCon
SQL = "Insert Into tbl_Namen(Vorname, Nachname) Values ('" & Tabelle1.Range("H4").Value & "','" & Tabelle1.Range("I4").Value & "');"
'Open SQL, strCon, adOpenKeyset=1, adLockReadOnly=1, adCmdText=1 ',adOpenForwardOnl
objRst.Open SQL, strCon, 1, 1, 1
' objCon.Execute SQL 'braucht man m.E. nicht
objRst.Close: objCon.Close
Set objRst = Nothing: Set objCon = Nothing
End Sub
'Alternatives Beispiel
Sub ImportEinzelWerteExcelToAccess()
'Einlesen von Daten aus einer Exceldatei in ACCESS (Beispiel)
'Late Binding-Verfahren (ohne Verweis)
Dim accApp As Object, accDB As Object, accRS As Object
Dim WSh As Worksheet
Dim sDB As String, sTabelle As String
Dim i As Integer
'<<< Werte anpassen >>>
sDB = "C:\Users\voltm\Desktop\MyTools\Daten\MeineTestdatenbank.accdb"
sTabelle = "MyTestTable" 'Tabelle in DB
Set WSh = ThisWorkbook.Sheets("Tabelle1") 'Quelltabelle
Set accApp = CreateObject("ACCESS.Application")
accApp.Visible = True
Call accApp.OpenCurrentDatabase(sDB, False) 'Datenbank öffnen, Passwort ist optional
Set accDB = accApp.CurrentDb
Set accRS = accDB.OpenRecordset(sTabelle) 'Tabelle festlegen
With accRS
For i = 6 To 7
.AddNew
.Fields(0) = WSh.Cells(i, 6).Value '.Fields(1) = ... ZweiSpaltig?
.Update
Next i
.Close
End With
accApp.DoCmd.CloseDatabase
accApp.Quit
Set accRS = Nothing
Set accDB = Nothing
Set accApp = Nothing
End Sub
viele Grüße
Karl-Heinz
|