在excel中迭代数据库查询结果在vba中
我想打开一个到SQL数据库的连接,然后访问单个单元。我有一个使用PivotTableWizard的示例(如下所示)。我想知道一种没有任何数据透视表的方法 - 我想逐个单元地进行迭代。或者这个数据透视表向导也适用于这个目的吗?在excel中迭代数据库查询结果在vba中
提到的例子:
ConnectionString = "Driver={SQL Server};Server=Serversql11;Persist Security Info=False;Integrated Security=SSPI;Database=DB_IC;"
PivotName = "Talks"
QArray = Array(ConnectionString, _
"exec dbo.talksReport '" & CStr(param_date) & "'")
Worksheets("Talks").PivotTableWizard xlExternal, QArray, Worksheets("Talks").Range("A1"), PivotName
TIA /卡罗尔
如果你想迭代通过细胞的细胞,你可以做这样的事情:
Sub PrintCellContentsToDebugWindow()
Dim ws As Worksheet
Dim rng As Range
Dim intCounterRow As Integer
Dim intCounterCol As Integer
Dim intMaxRow As Integer
Dim intMaxCol As Integer
Set ws = ActiveSheet 'OR '
'Set ws = ActiveWorkbook.Sheets("Sheet1") '
intCounterRow = 1
intCounterCol = 1
intMaxRow = 100
intMaxCol = 25
Do While intCounterCol <= intMaxCol
intCounterRow = 1
Do While intCounterRow <= intMaxRow
Set rng = ws.Cells(intCounterRow, intCounterCol)
Debug.Print rng.Address & " " & rng.Value
intCounterRow = intCounterRow + 1
Loop
intCounterCol = intCounterCol + 1
Loop
End Sub
上面的代码迭代通过前100行和前25列,并在Visual Basic编辑器的调试窗口中打印单元格地址及其值。
谢谢。但实质是如何从数据库中获取数据到单元格中。 – KarolDepka 2010-08-05 12:23:49
@Karol在这种情况下,您可以简单地使用Excel中的“获取外部数据”功能。在较早版本的Excel中,它位于数据>获取外部数据>新建数据库查询下。 – 2010-08-05 12:32:53
Thx。我可以以自动方式使用它吗?此解决方案的最终用户应该尽可能少地执行手动步骤。我可以在做你所建议的内容的同时记录一个宏,并查看记录了哪些代码 - 然后在目标工作表文件中嵌入类似的代码。 – KarolDepka 2010-08-05 14:14:51
根据您想要这样做的原因,使用记录集可能更明智。 – Fionnuala 2010-08-05 12:15:44
Per Remou,尝试使用ADO ... http://www.xtremevbtalk.com/showthread.php?t=217783。 – variant 2010-08-10 18:08:47