Private Sub Command1_Click()
Dim RDb As New ADODB.Connection
Dim Cat As New ADOX.Catalog
Dim ResendFile As String
ResendFile = "C:\Documents and Settings\Administrator\桌面\WinSockMDB\a.xls"
RDb.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ResendFile & ";Extended Properties='Excel 8.0;HDR=no'"Set Cat.ActiveConnection = RDb
MsgBox Cat.Tables.Count
Dim i As Integer
For i = 0 To Cat.Tables.Count - 1
    MsgBox Cat.Tables(i).Name
Next i
RDb.Close
End Sub
为什么对于某些excel表数量就对了,某些数量就多了一张同名的(ado与adox效果一样)
譬如我的工作薄里面只有一张表(表1),count出来就是2,一张叫表1$,另一张叫表1$_
请问是什么原因,怎么处理啊?(不要用createobject(excel.application))

解决方案 »

  1.   

        Dim cnn1 As ADODB.Connection
        Dim rstSchema As ADODB.Recordset
        Dim sconn As String
        '连接字符串
        sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & FileName  'FileName你要打开文件名变量    Set cnn1 = New ADODB.Connection
        cnn1.Open sconn
        Set rstSchema = cnn1.OpenSchema(adSchemaTables)    Dim SheetName As String
        Dim k As Integer
        Do Until rstSchema.EOF
            If Trim(rstSchema!TABLE_TYPE) = "SYSTEM TABLE" Then
                SheetName = rstSchema!TABLE_NAME    '这就是你想要的表名
                'MsgBox "Table name: " & rstSchema!TABLE_NAME & vbCr & "Table type: " & rstSchema!TABLE_TYPE & vbCr
            End If
            rstSchema.MoveNext
        Loop
        rstSchema.Close
        cnn1.Close