Code pour récupérer des données d'oracle et excel envoyer les données qui a la même du nom de la cellule à différentes feuilles excel

Qui suit est le code VB pour récupérer des données de la base de données oracle pour excel.

La COLLABNAME onglet à partir de la table TABLE_NAME a 20 différents collaboration noms et je veux envoyer les données correspondant à chaque collaboration sur une autre feuille à partir de la feuille sheet1

Actuellement, je prévois d'écrire le même code 20 fois et extraire des données de différentes feuilles et le code est indiqué ci-dessous

CODE ACTUEL:

   Sub Load_data()
Sheets("Sheet1").Select
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim col As Integer
Dim row As Integer
Dim Query As String
Dim mtxData As Variant
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open ( _
"User ID=USERID" & _
";Password=PASSWORD" & _
";Data Source=xx.xx.xx.xxx:xxxx/xxxx" & _
";Provider=OraOLEDB.Oracle")
rs.Open "select COLLABNAME,DATETIME,TOTALFLOWS from TABLE_NAME WHERE  to_date(DATETIME, 'DDMMYYYY HH24:MI') BETWEEN  case when to_char(sysdate, 'dd') > 7 then trunc(sysdate-7) else trunc(sysdate,'mm') end AND trunc(sysdate) AND COLLABNAME like 'COLLABNAME1' ORDER BY DATETIME ASC", cn
With Sheet1
col = 0
'First Row: names of columns
Do While col < rs.Fields.Count
.Cells(1, col + 1) = rs.Fields(col).Name
col = col + 1
Loop
mtxData = Application.Transpose(rs.GetRows)
.Range("A2").Resize(UBound(mtxData, 1) - LBound(mtxData, 1) + 1, UBound(mtxData, 2) - LBound(mtxData, 2) + 1) = mtxData
End With
rs.Close
rs.Open "select COLLABNAME,DATETIME,TOTALFLOWS from TABLE_NAME WHERE  to_date(DATETIME, 'DDMMYYYY HH24:MI') BETWEEN  case when to_char(sysdate, 'dd') > 7 then trunc(sysdate-7) else trunc(sysdate,'mm') end AND trunc(sysdate) AND COLLABNAME like 'COLLABNAME2' ORDER BY DATETIME ASC", cn
With Sheet2
col = 0
'First Row: names of columns
Do While col < rs.Fields.Count
.Cells(1, col + 1) = rs.Fields(col).Name
col = col + 1
Loop
mtxData = Application.Transpose(rs.GetRows)
.Range("A2").Resize(UBound(mtxData, 1) - LBound(mtxData, 1) + 1, UBound(mtxData, 2) - LBound(mtxData, 2) + 1) = mtxData
End With
rs.Close
End Sub

J'ai juste gardé le code pour seulement deux COLLABNAMES

Je veux ajouter une boucle qui contient COLLABNAME1, COLLABNAME2, COLLABNAME3, COLLABNAME4
...COLLABNAME20 de sorte que les données récupérées à 20 feuilles différentes à partir de la table TABLE_NAME qui diminue la longueur de code et d'être plus élégant

Merci d'avance

OriginalL'auteur user1292831 | 2012-03-29