Est-il possible de rechercher, puis de lire des valeurs spécifiques à partir d'un fichier Excel à l'aide d'Access VBA?

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

Question

J'ai dû lire des valeurs à partir d'un fichier Excel avant, mais c'était un fichier séparé des virgules Excel. Cette fois, j'ai un fichier Excel avec un graphique et deux tables. Je veux seulement lire dans les valeurs dans une colonne d'une table spécifique. Voici une image de la mise en page du fichier Excel. Je voudrais lire dans la colonne marquée "montant" dans la table inférieure marquée par une flèche rouge. Je ne veux pas lire au total tous les montants en dessous.

Entrez la description de l'image ici

Quand je lisais dans toutes les valeurs d'un fichier séparé par virgule Excel, j'ai utilisé ce code. Les initialisations et la logique inutile ont été supprimées pour montrer uniquement le code de pertinent à cette question.

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

Y a-t-il quelque chose de similaire que je peux faire pour le fichier Excel que je tente actuellement d'importer? Existe-t-il un moyen de importer seulement une colonne?

Mise à jour: les fichiers Excel sont toujours dans la même présentation que dans je suis toujours récupération d'informations à partir de machines à sous 29g-34g.

Était-ce utile?

La solution

Vous devez ajuster le chemin du fichier et le nom de la feuille, mais quelque chose comme cela devrait fonctionner:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top