Можно ли искать, затем читать в определенных значениях из файла Excel, используя Access VBA?

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

Вопрос

Я должен был прочитать значения из файла Excel до, но это был файл разделенного запятой Excel. На этот раз у меня есть файл Excel с графиком и двумя таблицами. Я хочу прочитать только в значениях в одном столбце конкретной таблицы. Вот изображение макета файла Excel. Я хотел бы прочитать в столбце, помеченную «сумму» в нижней таблице, отмеченной красной стрелкой. Я не хочу читать в общей сложности все суммы ниже.

Введите описание изображения здесь

Когда я читал во всех значениях из файла отделенного запятой Excel, я использовал этот код. Инициализации и ненужная логика были удалены только для того, чтобы показать только актуальный код к этому вопросу.

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
.

Есть что-то похожее, что я могу сделать для файла Excel, я в настоящее время пытаюсь импортировать? Есть ли способ импортировать только один столбец?

Обновление: файлы Excel всегда в том же макете, что и я всегда извлекаю информацию из слотов 29G-34G.

Это было полезно?

Решение

Вам нужно будет настроить путь к файлу и имя листа, но что-то вроде этого должно работать:

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
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top