È possibile cercare, quindi leggere in valori specifici da un file Excel utilizzando Access VBA?

StackOverflow https://stackoverflow.com//questions/25044194

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.

Inserisci Descrizione dell'immagine qui

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.

È stato utile?

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top