Ho letto un po 'dei thread correlati, ma mi ha lasciato ancora questa domanda. Voglio scrivere una funzione in un'applicazione di database Access per importare a livello di codice i dati di Excel che iniziano prima delle prime due righe, ovvero l'intestazione ei delimitatori di unità.Come posso importare a livello di codice i dati di Excel in una tabella di accesso?
Sto cercando di realizzare le seguenti cose:
- Essere in grado di selezionare dinamicamente il file di Excel Sto cercando di importare, magari utilizzando una finestra di dialogo e, forse, una finestra del browser di file.
- Inserire i dati "comuni" in ogni riga durante l'importazione, come il numero di inventario del registratore e la posizione designata del registratore.
- Avvia l'importazione alla riga n. 3, invece della riga n. 1, poiché il dispositivo inserisce automaticamente l'intestazione e le informazioni di unità di misura per il record.
- Ignora tutte le altre colonne nel foglio di lavoro: i dati saranno SEMPRE sempre presenti nelle colonne da A a G e i dati inizieranno SEMPRE sulla riga # 3.
Questo è come i dati di Excel è comunemente formattato (i trattini rappresentano i dati):
Date Time Temp Dew Point Wet Bulb GPP RH Cº Cº Cº g/Kg % ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
Ho provato la funzione built-in di accesso 'Carica dati esterni', ma ha vinto' t saltare la riga n. 2 ei dati aggiuntivi nel file Excel generano un errore durante il tentativo di importazione, interrompendo il processo nelle relative tracce.
Sarò il primo ad ammettere che non ho mai provato a scrivere una funzione di importazione per Access prima di utilizzare file esterni, quindi sono un po 'un principiante. Qualsiasi aiuto che la gente possa mostrarmi sarà sempre molto apprezzato, e posso aggiornarlo con il codice tentato, se necessario. Grazie in anticipo per tutto il vostro aiuto, a tutti!
- A cura 01/03/2011 @ 10:41 -
Dopo aver letto la connessione ADO alla discussione dei dati di Excel proposto da Remou, qui è un codice Penso potrebbe fare il lavoro, ma Non sono sicuro.
Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command
Dim intField As Integer
Dim strFile As String
strFile = fncOpenFile
If strFile = "" Then Exit Sub
With cnn2
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source='" & strFile & "'; " & "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
.Open
End With
Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [Data$] WHERE G1 IS NOT NULL"
rs2.CursorLocation = adUseClient
rs2.CursorType = adOpenDynamic
rs2.LockType = adLockOptimistic
rs2.Open cmd2
Il problema che la soluzione di cui sopra ha è che avrei bisogno di conoscere in anticipo la gamma dei dati, e in realtà dipende da quanto questo dispositivo attira durante i suoi compiti di registrazione dei dati. Daro 'un'occhiata a questo quando torno in ufficio domani - e vedere se potrei fornire più informazioni. –
È sempre possibile connettersi tramite l'automazione e ottenere l'intervallo, anche se rallenterà un po 'le cose. – Fionnuala
Ho pubblicato una dichiarazione di prova sopra, modificata al mio post precedente. Era questo quello che avevi in mente? –