문제

이전에 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