如何使用Excel VBA和ADO将查询结果放入数据表中?

问题描述:

我想通过ODBC使用ADO从数据库表中提取记录并将它们放入Excel工作表中。我可以做这个。最终,我想要将数据包含在Excel表格中。我知道如何通过选择适当的单元格并使用“插入”菜单创建表格来手动执行此操作。我如何在我的VBA代码中将返回的查询结果放入Excel表格中的目标工作表中?我尝试使用宏记录器,但生成的代码没有帮助。如何使用Excel VBA和ADO将查询结果放入数据表中?

+0

你想要的表是刷新?请问什么是数据源,品牌和版本?你使用的是什么版本的Excel?你准确记录了什么行为?我发现这是一种非常有用的方式,可以开始使用这种代码。 – 2012-02-09 03:43:51

+0

是的,我希望它是可刷新的,但不一定可更新。我正在使用PostgreSQL ODBC 9.0驱动程序。我记录的操作是:选择数据范围,选择插入选项卡,单击表并给它一个名称。我也离开了检查标题框。我没有看到如何将生成的代码与我的数据检索代码集成。我正在使用Excel 2007. – n8gard 2012-02-09 17:03:38

是这样的吗?

在导入数据后添加此代码。我假设以下。请相应修改。

  • 的数据在Sheet1

    的单元格A1
  • 行1导入具有列标题

    Sub Sample() 
    
        Dim LastRow As Long, LastCol As Long 
        Dim ws As Worksheet 
        Dim rng As Range 
    
        Set ws = Sheets("Sheet1") 
    
        LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row 
        LastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column 
    
        Set rng = Range("$A$1:$" & Split(Cells(, LastCol).Address, "$")(1) & "$" & LastRow) 
    
        With ws 
         .ListObjects.Add(xlSrcRange, rng, , xlYes).Name = "Table1" 
         .ListObjects("Table1").TableStyle = "TableStyleLight2" 
        End With 
    
    End Sub 
    
+0

这是完美的。非常感谢。我将这个子文件添加到我的模块中,稍微调整它以将目标工作表作为参数,所以现在我可以在多个位置使用它。 – n8gard 2012-02-10 18:52:07

如果您单击“数据”选项卡上的“从其他源”按钮,应该会看到列出的ODBC。然后您可以指定要连接的表格。然后,您将拥有一个包含数据的可刷新表格,换句话说,它将您已经在做的和您想要的内容组合到一个步骤中。根据您在评论中所说的内容,我认为这是一条路,但如果我错过了某些东西,请告诉我。

+0

嗨,道格。当我通过ADO从数据库中提取记录时,我期待在VB代码中执行此操作。我一直无法在任何地方找到任何代码示例。 – n8gard 2012-02-09 23:53:34