É possível procurar e, em seguida, para ler em valores específicos de um arquivo do Excel utilizando VBA do Access?
-
21-12-2019 - |
Pergunta
Eu tive que ler em valores a partir de um arquivo do excel antes, mas era um Excel arquivo separado por vírgulas.Desta vez eu tenho um arquivo excel com um gráfico e duas tabelas.Eu só quero ler os valores em uma coluna de uma tabela específica.Aqui está uma imagem do layout do arquivo do excel.Eu gostaria de ler a coluna marcada "Quantidade" na parte inferior da tabela marcado por uma seta vermelha.Eu não quero ler no total de todos os valores abaixo.
Quando eu estava lendo todos os valores de um excel arquivo separado por vírgulas eu usei este código.Inicializações e desnecessária a lógica de ter sido removido para mostrar apenas as pertinentes ao código para esta pergunta.
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
Há algo de semelhante que eu possa fazer para o arquivo do excel atualmente, estou tentando importar?Existe uma maneira para importar apenas que uma coluna?
ATUALIZAÇÃO:os arquivos do excel são sempre no mesmo formato em que eu estou sempre obter informações a partir de slots de 29G-34 G.
Solução
Você vai precisar de ajustar o caminho do ficheiro e o nome da folha, mas algo como isso deve funcionar:
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