把完整代码贴出来,明天去公司改些就可以用了
Sub getTableDefinition()
Dim DBRst As ADODB.Recordset
Dim ConnDB As ADODB.Connection
Set DBRst = New ADODB.Recordset
Set ConnDB = New ADODB.Connection
Dim sqlrst As String
Dim OraOpen As Boolean
OralID = "ORCL"
OraUsr = "scott"
OraPwd = "********"
ConnStr = "Provider = MSDAORA.1;Password=" & OraPwd & ";User ID=" & OraUsr & ";DataSource=" & OralID & ";Persist Security Info=True"
ConnDB.CursorLocation = adUseServer
ConnDB.Open ConnStr
OraOpen = True
Dim i As Integer
Dim j As Integer
Dim intTableIndex As Integer
Dim intSpace As Integer
i = 6
intTableIndex = 5
intSpace = 10
While Cells(intTableIndex, 1).Value <> Empty
j = 3
sqlrst = Worksheets("sheet1").Cells(1, 8).Value
sqlrst = Replace(sqlrst, "@", Cells(intTableIndex, 1).Value)
Set DBRst = New ADODB.Recordset
DBRst.ActiveConnection = ConnDB
DBRst.Open sqlrst, ConnDB, 3, 4
'DBRst.Open sqlrst, ConnDB, adOpenStatic
DBRst.MoveFirst
i = 1 + (intTableIndex - 4) * intSpace
Worksheets("sheet1").Cells(i - 2, 3).Value = Cells(intTableIndex, 1).Value
While Not DBRst.EOF
Worksheets("sheet1").Cells(i, j) = DBRst![Val]
i = i + 1
If i - (intTableIndex - 4) * intSpace > 4 Then
i = 1 + (intTableIndex - 4) * intSpace
j = j + 1
End If
DBRst.MoveNext
Wend
intTableIndex = intTableIndex + 1
Wend
End Sub