2016-09-29 2 views
0

ich den Import einer Excel-Datei in den Zugriff mit VBA (dao) auf die folgende Weise:Erhalten Ende der Zeilen einer Excel-Datei in Access VBA

Set db = CurrentDb  
query = "SELECT DISTINCT * INTO MyTable" _ 
      & " FROM [Excel 12.0 Xml;HDR=Yes;Database=" & filePath & "].[Sheet1$];" 
db.Execute (query) 

[Sheet1$] das Schlüsselwort ist hier. Mein Excel-Header beginnt mit Zeile 3. Ich möchte etwas wie [Sheet1$A3:Lastline] tun.

Gibt es eine einfache Möglichkeit, die lastline zu erhalten? Oder muss ich wirklich ein VBA-Excel-Objekt erstellen, die Datei öffnen und zählen?

Alternativ kann ich den Header Start ändern? Zum Beispiel, indem Sie stattdessen ein benutzerdefiniertes Importschema verwenden?

Vielen Dank im Voraus.

+0

Warum nicht nur schwer Code '[Sheet1 $ A3: A1048576]'? – onedaywhen

Antwort

2

eine Zählung Abfrage mit einem Cord-Betrachten und in Make-Tabellenabfrage führt verketten:

Dim db As DAO.Database 
Dim rst As DAO.Recordset 
Dim query As String 

Set db = CurrentDb 
Set rst = db.OpenRecordset("SELECT Count(*) AS RowCount" _ 
    & " FROM [Excel 12.0 Xml;HDR=No;Database=" & filePath & "].[Sheet1$]") 

query = "SELECT DISTINCT * INTO MyTable" _ 
    & " FROM [Excel 12.0 Xml;HDR=Yes;" _ 
    & " Database=" & filePath & "].[Sheet1$A3:A" & rst!RowCount & "];" 

db.Execute (query) 

rst.Close 
Set rst= Nothing 
Set db = Nothing 
+0

funktioniert wie ein Charme, vielen Dank! – CoffeeCups