È possibile cercare, quindi leggere in valori specifici da un file Excel utilizzando Access VBA?
-
21-12-2019 - |
Domanda
Ho dovuto leggere in valori da un file Excel prima, ma è stato un file separato da virgola di Excel. Questa volta ho un file Excel con un grafico e due tabelle. Voglio solo leggere nei valori in una colonna di una tabella specifica. Ecco un'immagine del layout del file Excel. Vorrei leggere nella colonna contrassegnata da "Importo" nella tabella inferiore contrassegnata da una freccia rossa. Non voglio leggere nel totale di tutti gli importi sotto di esso.
Quando stavo leggendo in tutti i valori da un file separato di Excel Comma ho usato questo codice. Le inizializzazioni e la logica non necessaria sono state rimosse per mostrare solo il codice pertinente a questa domanda.
Set objconnection = CreateObject("ADODB.connection")
Set objRecordset = CreateObject("ADODB.recordset")
objconnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strpathtotextfile & ";Extended Properties=""Text;HDR=YES;FMT=Delimited"""
objRecordset.Open "SELECT * FROM [" & ThisFileName & "]", objconnection, adOpenStatic, adLockOptimistic, adCmdText 'select all text lines from the file
Do While Not objRecordset.EOF 'read lines until end of file
'Clear out all the local objects so prior values aren't left there'
SampleName = ""
DateTimeAcquired = ""
Analyte = ""
Concentration = ""
'reads in each value according to column name and save to variable'
SampleName = objRecordset.Fields("Sample Name").Value
DateTimeAcquired = objRecordset.Fields("Date and Time Acquired").Value
Analyte = objRecordset.Fields("Element Full Name").Value
Concentration = objRecordset.Fields("Concentration").Value
'other logic'
objRecordset.MoveNext
Loop
.
C'è qualcosa di simile che posso fare per il file Excel che sto attualmente cercando di importare? C'è un modo per importare solo quella colonna?
Aggiornamento: i file Excel sono sempre nello stesso layout di cui si recupera sempre le informazioni da slot 29G-34G.
Soluzione
Dovrai regolare il percorso del file e il nome del foglio, ma qualcosa del genere dovrebbe funzionare:
Sub Tester()
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\Users\thisuser\Desktop\test.xlsx;" & _
"Extended Properties=""Excel 12.0 Xml;HDR=NO"""
Set rs = cn.Execute("select * from [Sheet1$G29:G34]")
Do While Not rs.EOF
Debug.Print rs(0).Value
rs.MoveNext
Loop
End Sub
.