2010-08-05 69 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

相關問題