例如: 表格第一行: XXXXXXXXXXXXXXXXXXX某公司 
    第二行: 关键列名1    关键列名2    关键列名3  .....
    第三行:   值1             值2       值3      .....
    第四行:  .....................................
    第五行:   .....................................
adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic
    Debug.Print adoRecordset.RecordCount
    Dim i As Integer
    Do Until adoRecordset.EOF
        For i = 0 To adoRecordset.Fields.Count - 1
            Debug.Print adoRecordset.Fields.Item(0).Name   '问题: 打开Excel取列名默认为第一行(会取到XXXXXXXXXXXXXXXXXXX某公司 作为列名),怎么改到第二行呢?            Debug.Print adoRecordset.Fields.Item(0).Value
        Next i
        adoRecordset.MoveNext
    Loop

解决方案 »

  1.   

    select * from [sheet1$],中的sheet1应该是一个标准的二维表格才可以吧.
    你可以将表格第一行: XXXXXXXXXXXXXXXXXXX某公司 放入工作表的页眉中去 
      

  2.   

    N久没弄excel了,列名好象要在excel的"插入/名称"中去定义
      

  3.   

    可以指定范围:"SELECT * FROM [Sheet1$A1:C5]"
      

  4.   


    数据是动态无限向下进行延伸该怎么做呢????(不仅到c5,有可以c100,c200,c1000)
      

  5.   

    若指定范围可行的话,那就要先取到excel的可用的行数:
    Set xlApp = CreateObject("Excel.Application") 
    xlApp.Visible = False 
    Set xlBook = xlApp.Workbooks.Open(pathstr + "\your.xls") 
    Set xlsheet = xlBook.Worksheets(1) 
    usedrow=xlsheet.usedrange.rows.count
    xlApp.Quit 
    Set xlApp = Nothing
    有了usedrow就可以指定范围了
      

  6.   

    Worksheet对象有个UsedRange属性,返回指定工作表中已使用区域的Range对象,即返回工作表中已使用的单元格区域。
    明白我的意思没有?
      

  7.   


        Dim i As Integer, lngRowID As Long  '行号
        Do Until adoRecordset.EOF
            lngRowID = lngRowID + 1
            If lngRowID > 1 Then    '跳过第一行
                For i = 0 To adoRecordset.Fields.Count - 1
                    Debug.Print adoRecordset.Fields.Item(0).Name
                    Debug.Print adoRecordset.Fields.Item(0).Value
                Next i
                adoRecordset.MoveNext
            End If
        Loop
      

  8.   

    搞错了。要将 adoRecordset.MoveNext 放到 End If 外面
      

  9.   

    "SELECT * FROM [Sheet1$A4:C65536]" 
      

  10.   

    usedrow=xlsheet.usedrange.rows.count 
    今天在这儿学个,以前我都是一直循环到最后,中间判断为空就退出的笨办法