2010-08-05 11 views
0

Je voudrais ouvrir une connexion à la base de données SQL, puis avoir accès aux cellules individuelles. J'ai un exemple qui utilise PivotTableWizard (présenté ci-dessous). Je voudrais savoir d'une façon qui n'a rien à faire Tableaux pivotants - Je voudrais itérer cellule par cellule. Ou est ce PivotTableWizard approprié à cet effet également?Itérer sur les résultats de requête de base de données dans vba dans Excel

L'exemple mentionné:

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 /Karol

+0

Selon la raison pour laquelle vous souhaitez effectuer cela, il peut être plus judicieux d'utiliser un jeu d'enregistrements. – Fionnuala

+0

Par Remou, essayez d'utiliser ADO ... http://www.xtremevbtalk.com/showthread.php?t=217783. – variant

Répondre

0

Si vous voulez itérer cellule par cellule, vous pourriez faire quelque chose comme ceci:

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 

Le code ci-dessus itère via les 100 premières lignes et les 25 premières colonnes et imprime l'adresse de la cellule et sa valeur dans la fenêtre de débogage dans Visual Basic Editor.

+0

Merci. Mais l'essentiel est de savoir comment obtenir les données de la base de données dans les cellules. – KarolDepka

+2

@Karol Dans ce cas, vous pouvez simplement utiliser la fonctionnalité "Get External Data" dans Excel. Dans les anciennes versions d'Excel, il se trouve sous Données> Obtenir des données externes> Nouvelle requête de base de données. –

+1

Thx. Pourrais-je l'utiliser de manière automatisée? L'utilisateur final de cette solution devrait faire le moins d'opérations manuelles possible. Je pourrais probablement enregistrer une macro en faisant ce que vous avez suggéré et voir quel code est enregistré - et ensuite incorporer du code similaire dans le fichier de la feuille cible. – KarolDepka