Est-il possible de rechercher, puis de lire des valeurs spécifiques à partir d'un fichier Excel à l'aide d'Access VBA?
-
21-12-2019 - |
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.
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.
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