Supportnet / Forum / Datenbanken
Excel to Access
Frage
Hallo zusammen,
hänge fest, dieses VBA Modul soll mir ab Zeile [A9] alle Zeilen bis es zur ersten Leeren Zeile in meine Access Tabelle Kopieren, es ist auch möglich das nach einer leeren Zeile noch ein gefüllte Zeile kommt, die brauche ich nicht.
Private Sub ExcelImport()
Dim objAppXL As Object '// Excel.Application
Dim objWkbXL As Object '// Excel.Workbook
Dim objWksXL As Object '// Excel.Worksheet
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim lCount As Long '// Zaehler fuer die Treffer
Dim l As Long
DoCmd.SetWarnings False
DoCmd.RunSQL ("DELETE * FROM DMS")
DoCmd.SetWarnings True
'// Zugriff auf Excel-Instanz
On Error Resume Next
Set objAppXL = GetObject(, "Excel.Application")
If Err.Number = 429 Then Set objAppXL = CreateObject("Excel.Application")
On Error GoTo 0
'// Arbeitsmappe oeffnen
Set objWkbXL = objAppXL.Workbooks.Open("E:\Projekte\20040124\Testen.xls", , True)
Set objWksXL = objWkbXL.Sheets(1)
'// Recordset zum Schreiben oeffnen
Set db = DBEngine(0)(0)
Set rst = db.OpenRecordset("DMS")
objWksXL.Visible = True
'-- ab zeile 9 soll eingelesen werden
'objWksXL.Application.Cells(9, 1).Activate
'// Schleife (gleichzeitiges Schreiben und Zaehlen)
'-- bis zur ersten leeren zeile lesen
Do Until l > 100 'Or objWksXL.Cells.Value = ""
l = l + 1
If Not IsEmpty(objWksXL.Cells(l, 1).Value) Then
'// Zaehlen
lCount = lCount + 1
'// Schreiben
With rst
.AddNew
.Fields(0) = objWksXL.Cells(l, 1).Value
.Fields(1) = objWksXL.Cells(l, 6).Value
.Fields(2) = objWksXL.Cells(l, 7).Value
.Fields(3) = objWksXL.Cells(l, 8).Value
.Update
End With
End If
Debug.Print l
Loop
MsgBox "Es wurden " & lCount & " Datensätze importiert.", vbOKOnly + vbInformation, "Import beendet"
'objWksXL.Application.Visible = False
'// Objektvariablen freigeben
rst.Close
Set db = Nothing
objWkbXL.Close
Set objWksXL = Nothing
Set objWkbXL = Nothing
Set objAppXL = Nothing
End Sub
Gruss Reinhard
Antwort 1 von Teddy7
und wo ist Dein Problem ?
Antwort 2 von ReinhardH
Hi Teddy,
ich möchte, von Excel aus der ersten Spalte beginnend ab Zelle [A9] nach unten bis zur ersten Leeren Zelle nach Access Imporieren.
Gruss Reinhard
ich möchte, von Excel aus der ersten Spalte beginnend ab Zelle [A9] nach unten bis zur ersten Leeren Zelle nach Access Imporieren.
Gruss Reinhard
Antwort 3 von MickK
Ja so weit so gut, das hat man verstanden. Aber was läuft denn nicht? Ausser, dass Deine Laufvariable I nicht initialisiert ist und somit von 0 läuft und nicht von 9, sieht der Code doch i.O. aus.
Gruß
Mick
Gruß
Mick