VBA 包含 SQL 查询标头

Posted

技术标签:

【中文标题】VBA 包含 SQL 查询标头【英文标题】:VBA to include SQL query headers 【发布时间】:2017-03-02 03:09:52 【问题描述】:

我需要添加表头以包含在我的 VBA 代码中,该代码连接到 SQL。该代码正在运行(因为它在新工作表上吐出 SQL 结果),但它没有抓取标题。

有人可以帮忙吗?

Sub SpectrumADGroupMapping()

    'Start Declarations'
    Dim Cn As ADODB.Connection
    Dim rs As ADODB.Recordset

    'Connection string to SQL server/DB (Windows Auth)
    Set Cn = New ADODB.Connection
    Cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=TEST;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=TESTPC;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=TESTDBNAME"
    Cn.Open 

    Set and Execute SQL Command
    Set rs = New ADODB.Recordset
    rs.ActiveConnection = Cn
    rs.Open "Select top 50* from TestTable order by creationDate desc"

    'Copy Data to Excel
    Worksheets.Add(After:=Worksheets(1)).Name = "TestWorkSheet"
    Range("A2").CopyFromRecordset rs

    Cn.Close

End Sub

【问题讨论】:

【参考方案1】:

类似下面的东西应该可以工作。 (我刚刚将它从我的一个电子表格中拖出来 - 只是更改名称以保护无辜者。)

' Write out the Field names as column headings
Dim c As Long
For c = 1 To rs.Fields.Count
    With Worksheets("TestWorkSheet").Cells(1, c)
        .Value = rs.Fields(c - 1).Name

        'The rest is just how we format the headings - leave it in or take it out
        .Font.Bold = True
        .Interior.Pattern = xlSolid
        .Interior.PatternColorIndex = xlAutomatic
        .Interior.ThemeColor = xlThemeColorDark1
        .Interior.TintAndShade = -0.149998474074526
        .Interior.PatternTintAndShade = 0
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        'End of formatting of headings

    End With
Next c

将该代码放在您的 Range("A2").CopyFromRecordset rs 行之前(您应该将其真正编码为 Worksheets("TestWorkSheet").Range("A2").CopyFromRecordset rs - 在使用 RangeCells 等时限定您所指的工作表总是一个好主意)。

【讨论】:

以上是关于VBA 包含 SQL 查询标头的主要内容,如果未能解决你的问题,请参考以下文章

改进 Excel VBA 中的 SQL 查询

VBA/SQL 参数化查询 - 字段列表中的未知列

如何使用sql语句和vba将数据从MS-Access导入excel power查询?

通过 Excel VBA 进行 SQL 查询的复杂 JOIN 子句中的语法错误

访问 VBA 查询

MS Access VBA:基于查询结果的 VBA 命令