J'essaye d'insert des données d'Excel à une database SQL au moyen de VBA. J'utilise la structure suivante dans Excel:
J'utilise le code suivant:
Private Sub CommandButton1_Click() Dim i As Integer Dim p As Integer Dim product As Ssortingng Dim version As Ssortingng Dim opt As Ssortingng Dim visible As Ssortingng Excel.Worksheets("Blad2").Select i = 3 Do Until IsEmpty(Cells(i, 1)) opt = ActiveSheet.Cells(i, 1) p = 3 Do Until IsEmpty(Cells(1, p)) product = ActiveSheet.Cells(1, p) version = ActiveSheet.Cells(2, p) visible = ActiveSheet.Cells(i, p) Debug.Print product & version & opt & visible p = p + 1 Loop i = i + 1 Loop End Sub
Le résultat de l'exécution du script est le suivant:
product#1 version#1 option#1 0 product#1 version#2 option#1 1 option#1
Alors que je veux que cela se traduise par:
product#1 version#1 option#1 0 product#1 version#2 option#1 1 product#1 version#1 option#2 0 product#1 version#2 option#2 0
Est-ce que quelqu'un peut m'aider?
C'est quelque chose qui devrait fonctionner pour l'input de ceci:
apportant ceci:
product1 version1 option1 0 product1 version2 option1 1 product1 version1 option2 0 product1 version2 option2 0
Option Explicit Public Sub TestMe() Dim k As Long Dim i As Long Dim p As Long Dim product As Ssortingng Dim version As Ssortingng Dim opt As Ssortingng Dim visible As Ssortingng With ActiveSheet i = 3 Do Until IsEmpty(.Cells(i, 1)) p = 3 k = 0 Do Until IsEmpty(.Cells(1, p)) opt = .Cells(i, 1) product = .Cells(1, p) visible = .Cells(i, p) version = .Cells(2, 3 + k) k = k + 1 Debug.Print product & " " & version & " " & opt & " " & visible p = p + 1 Loop i = i + 1 Loop End With End Sub
En général, pensez à utiliser de meilleurs noms pour les variables et à utiliser Long
au lieu de Integer
.
J'ai peut-être manqué quelque chose mais semble que la variable visible
est coincée avec la rangée 3 .Cells(3, p)
, c'est pourquoi il insère seulement l'option 1 et ne tient pas count de la première boucle.
essayez de le changer avec visible = ActiveSheet.Cells(i, p)
Edit: Vous avez dit que cela ne fonctionne pas, mais semble quand je l'ai testé, je reçois le bon résultat.
Il est possible que la string SQL
à exécuter soit le problème ici.