我正在使用Excel从SQL数据库中提取数据。我使用了另一个SO问题的代码,效果很好。现在,除了实际表之外,我还想从表中提取列名。我发现可以使用For Each fld循环获取名称。但是,由于列数可能会发生变化,因此仍然存在在Excel中将它们水平连续填充的问题-因此,我想我也需要为每个循环设置另一个或类似的控件。

Sub GetDataFromADO()

'Declare variables'
    Set objMyConn = New ADODB.Connection
    Set objMyCmd = New ADODB.Command
    Set objMyRecordset = New ADODB.Recordset

'Open Connection'
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;User ID=abc;Password=abc;"
    objMyConn.Open

'Set and Excecute SQL Command'
    Set objMyCmd.ActiveConnection = objMyConn
    objMyCmd.CommandText = "select * from myTable"
    objMyCmd.CommandType = adCmdText
    objMyCmd.Execute

'Loop Names'
    ' WHAT TO DO HERE????'

'Open Recordset'
    Set objMyRecordset.ActiveConnection = objMyConn
    objMyRecordset.Open objMyCmd

'Copy Data to Excel'
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset)

End Sub

最佳答案

我通常的代码非常相似:

For intColIndex = 0 To objMyRecordset.Fields.Count - 1
    Range("A4").Offset(0, intColIndex).Value = objMyRecordset.Fields(intColIndex).Name
Next

10-07 21:36