Ich versuche, Daten aus Access mithilfe einer Spalte von Excel zu extrahieren.Daten aus Access mit VBA mit Daten von Excel erhalten
Ich habe den folgenden Code versucht, aber es dauert nicht zu viel Zeit, wenn Anzahl der Zeilen in Excel 5k Zeilen überschreiten. Kennt jemand einen besseren Weg, um die Excel-Daten zu verweisen, die Ergebnisse zu erhalten:
Sub ddd()
Const dbloc As String = "C:\Users\mysystem\Downloads\Database11.accdb"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim xlbook As Workbook
Dim xlsheet As Worksheet
Dim a As Long
Dim SQL As String
Set xlbook = ActiveWorkbook
Set xlsheet = xlbook.Worksheets(1)
xlsheet.Range("B2:Z100000").ClearContents
Set db = OpenDatabase(dbloc)
SQL = "SELECT Material, MPN "
SQL = SQL & "FROM Sheet2 "
SQL = SQL & "WHERE Material IN ("
Dim r As Range
For Each r In Range("A2:A19098")
SQL = SQL & r.Text & ","
Next r
SQL = Left(SQL, Len(SQL) - 1) 'Drop last comma
SQL = SQL & ")"
' i want to change this for loop because my range might vary from 80-100k
rows and this method is not working. i got a suggestion here that i can
use a table for this. But i am new to macros and access and not sure of
the syntax. Can anyone please help with the syntax. Assuming tablename for
the excel data is column1 and ranges from a2:a100000
Set rs = db.OpenRecordset(SQL)
', dbOpenSnapshot)
If rs.RecordCount = 0 Then
MsgBox "No data retrieved from database", vbInformation + vbOKOnly, "No
Data"
GoTo SubExit
Else
rs.MoveLast
recCount = rs.RecordCount
rs.MoveFirst
End If
xlsheet.Range("C2").CopyFromRecordset rs
End Sub
Jede Hilfe werde ich sehr geschätzt. Vielen Dank!!
was meinst du 'eine Spalte verwenden'? .... Ich denke, dass Sie sagen wollten ... aber es dauert zu viel Zeit ... '... bitte aktualisieren Sie Ihre Frage – jsotola
Ich implementierte ähnliche Operation in Access - Daten in Tabelle basierend auf gefilterten Recordset von aktualisieren Schlüsselwerte. Die beste Leistung, die ich erzielt habe, wenn für jede Abfrage Stücke von 100 Schlüsseln verwendet wurden. Sie verwenden einen Block mit 19000 Schlüsseln, der langsam sein kann. Überprüfen Sie, ob die Zugriffstabelle einen Index im Schlüsselfeld hat. Auch SQL-Text kann in Ihrem Fall 64K überschreiten. –
Hallo @jsotola, mit einer Spalte hier bedeutet, ich überprüfe Einträge aus einer Spalte in meinem Excel wb, um Ergebnisse aus der Access-Datenbank abrufen. Du hast Recht, aber es braucht zu viel Zeit ... Weißt du, dass es ein besserer Weg ist, um das zu erreichen? Ich bin neu auf Zugang und Makro, also bitte helfen Sie mit der Syntax auch danke! –