Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige