【发布时间】:2010-11-16 01:50:29
【问题描述】:
我正在使用 Excel 从 SQL 数据库中提取数据。我使用了另一个 SO question 中的代码,它工作正常。现在,除了实际表之外,我还想从表中提取列名。我发现我可以使用 For Each fld 循环获取名称。但是,由于列数可能会发生变化,仍然存在将它们水平填充到 Excel 中的一行的问题 - 所以我想我还需要另一个 For each 循环或类似的东西。
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
【问题讨论】:
-
您不希望标题与数据对齐吗?数据从 A1 开始,但您似乎已将标题范围设置为 A4。
-
是的,你是对的 - 我的复制和粘贴错误。
标签: vba excel excel-2003