Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Exceldaten zu Access transferieren

Forumthread: Exceldaten zu Access transferieren

Exceldaten zu Access transferieren
17.02.2021 08:41:31
Mathe
Guten Morgen :-)
Ich möchte Daten aus einer Excel-Tabelle nach Access transferieren. Folgenden Code habe ich erarbeitet aber mir fehlt noch etwas.
Die Zeilen welche hinten mit 3x! gekennzeichnet sind stimmen nicht. Meiner Meinung nach fehlt hier die korrekte Zuweisung zu der nächsten leere Zeile in Access!? Der Code mit den anfänglichen 1x! funktioniert. Dies ist aber nur ein Testcode. In dem richtigen Code hab ich 85 Spalten welche transportiert werden müssen.
Private Sub CommandButton1_Click()
Dim strDB As String
Dim strTab As String
Dim objcon As ADODB.Connection
Dim rst As ADODB.Recordset
Dim Zeile As Long
Dim arWerte As Variant
Dim lngZeile As Long
Dim intIndex As Integer
strDB = "c:\Users\matth\OneDrive\Desktop\Testing_Access\Test_Database1.accdb"
strTab = "Test_con"
Set objcon = New ADODB.Connection
objcon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDB
With Sheets("Tabelle1")
arWerte = .Range(.Range("A2"), .Range("A2").End(xlToRight))
End With
Set rst = New ADODB.Recordset
rst.Open strTab, objcon, adOpenKeyset, adLockOptimistic
For intIndex = 1 To UBound(arWerte, 2)                          '!!!
rst.Fields(arWerte(1, intIndex)) = arWerte(1, intIndex).Value '!!!
Next                                                            '!!!
'!  With rst
'!   .AddNew
'!    !Feld01 = Tabelle1.Cells(2, 1)
'!    !Feld02 = Tabelle1.Cells(2, 2)
'!    !Feld03 = Tabelle1.Cells(2, 3)
'!    !Feld04 = Tabelle1.Cells(2, 4)
'!    !Feld05 = Tabelle1.Cells(2, 5)
'!    !Feld06 = Tabelle1.Cells(2, 6)
'!    !Feld07 = Tabelle1.Cells(2, 7)
'!    !Feld08 = Tabelle1.Cells(2, 8)
'!    !Feld09 = Tabelle1.Cells(2, 9)
'!    !Feld10 = Tabelle1.Cells(2, 10)
'!    .Update
'!  End With
rst.Update
objcon.Close
'  rst.Close
MsgBox ("Alle Werte an db übergeben!")
End Sub

Wäre Euch sehr dankbar wenn Ihr mir weiterhelfen könntet :-)
Liebe Grüsse
Mathe
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Exceldaten zu Access transferieren
17.02.2021 09:37:58
volti
Hallo Mathe,
hier mal eine (ungetestete) Idee.
Füllen fortlaufender Spalten eines neuen Datensatzes:
With rst
  .AddNew
  For intIndex = 1 To UBound(arWerte, 2)
      .Fields(intIndex - 1) = arWerte(1, intIndex).Value
      .Update
  Next
End With
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
SQL?
17.02.2021 10:31:37
Klaus
Hallo Mathe,
schmeiß den neuen Eintrag doch per SQL in die Tabelle:
Private Sub CommandButton1_Click()
Dim strDB As String
Dim strTab As String
Dim objcon As ADODB.Connection
Dim rst As ADODB.Recordset
Dim cmd As ADODB.Command
Dim Zeile As Long
Dim mySql As String
strDB = "c:\Users\matth\OneDrive\Desktop\Testing_Access\Test_Database1.accdb"
strTab = "Test_con"
Set objcon = New ADODB.Connection
objcon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDB
Set cmd = New ADODB.Command
cmd.ActiveConnection = objcon
mySql = "insert into [" & strTab & "] values ("
For Zeile = 1 To 10
mySql = mySql & "'" & Tabelle1.Cells(2, Zeile).Value & "', "
Next Zeile
mySql = Left(mySql, Len(mySql) - 2) & ")"
cmd.CommandText = mySql
cmd.Execute
MsgBox ("Alle Werte an db übergeben!")
End Sub
LG,
Klaus
Anzeige
AW: Exceldaten zu Access transferieren
18.02.2021 15:09:55
Mathe
Danke für Deine Antwort :-)
Ich habe den Code ein wenig angepasst:
Private Sub CommandButton1_Click()
Dim strDB As String
Dim strTab As String
Dim objcon As ADODB.Connection
Dim rst As ADODB.Recordset
Dim Zeile As Long
Dim arWerte As Variant
Dim arSpaltenName As Variant
Dim lngZeile As Long
Dim intIndex As Integer
strDB = "c:\Users\matth\OneDrive\Desktop\Testing_Access\Database1_Test.accdb"
strTab = "BOXer"
Set objcon = New ADODB.Connection
objcon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strDB
With Sheets("Tabelle1")
arSpaltenName = .Range(.Range("A1"), .Range("A1").End(xlToRight))
arWerte = .Range(.Range("A2"), .Range("A2").End(xlToRight))
End With
Set rst = New ADODB.Recordset
rst.Open strTab, objcon, adOpenKeyset, adLockOptimistic
'rst.AddNew
With rst
.AddNew
For intIndex = 1 To UBound(arWerte, 2)
'.Fields(arSpaltenName(1, intIndex)) = arWerte(1, intIndex).Value   '!!!
.Fields(intIndex - 1) = arWerte(1, intIndex).Value
Next
End With
'  With rst
'    .AddNew
'    !Test01 = Tabelle1.Cells(2, 1)
'    !Test02 = Tabelle1.Cells(2, 2)
'    !Test03 = Tabelle1.Cells(2, 3)
'    !Test04 = Tabelle1.Cells(2, 4)
'    !Test05 = Tabelle1.Cells(2, 5)
'    !Test06 = Tabelle1.Cells(2, 6)
'    !Test07 = Tabelle1.Cells(2, 7)
'    !Test08 = Tabelle1.Cells(2, 8)
'    !Test09 = Tabelle1.Cells(2, 9)
'    !Test10 = Tabelle1.Cells(2, 10)
'    .Update
'  End With
rst.Update
objcon.Close
'  rst.Close
MsgBox ("Alle Werte an db übergeben!")
End Sub
Ich denke das ich einen Schritt weiter bin. Jedoch bekomme ich nun ein "Objekt erforderlich" Fehler? Dies passiert in folgenden Zeilen:
'.Fields(arSpaltenName(1, intIndex)) = arWerte(1, intIndex).Value '!!!
.Fields(intIndex - 1) = arWerte(1, intIndex).Value
In der oberen Code-Zeile versuche ich mit dem Spaltennamen die Zuweisung. Aber wie gesagt, jetzt kommt der Objekt Erforderlich-Fehler?
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige