2010-08-05 87 views
0

我想打开一个到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 /卡罗尔

+0

根据您想要这样做的原因,使用记录集可能更明智。 – Fionnuala 2010-08-05 12:15:44

+0

Per Remou,尝试使用ADO ... http://www.xtremevbtalk.com/showthread.php?t=217783。 – variant 2010-08-10 18:08:47

回答

0

如果你想迭代通过细胞的细胞,你可以做这样的事情:

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编辑器的调试窗口中打印单元格地址及其值。

+0

谢谢。但实质是如何从数据库中获取数据到单元格中。 – KarolDepka 2010-08-05 12:23:49

+2

@Karol在这种情况下,您可以简单地使用Excel中的“获取外部数据”功能。在较早版本的Excel中,它位于数据>获取外部数据>新建数据库查询下。 – 2010-08-05 12:32:53

+1

Thx。我可以以自动方式使用它吗?此解决方案的最终用户应该尽可能少地执行手动步骤。我可以在做你所建议的内容的同时记录一个宏,并查看记录了哪些代码 - 然后在目标工作表文件中嵌入类似的代码。 – KarolDepka 2010-08-05 14:14:51

相关问题