Code VBA pour mettre à jour / créer un nouveau dossier à partir d'Excel vers Access
J'ai essayé de regarder partout pour une réponse, mais mes faibles compétences en VBA est vraiment pas m'aider à comprendre ce que j'essaie de code.
J'ai ce code pour l'instant:
Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=\\GSS_Model_2.4.accdb;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "Forecast_T", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
For i = 4 To 16
x = 0
Do While Len(Range("E" & i).Offset(0, x).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
.Fields("Products") = Range("C" & i).Value
.Fields("Mapping") = Range("A1").Value
.Fields("Region") = Range("B2").Value
.Fields("ARPU") = Range("D" & i).Value
.Fields("Quarter_F") = Range("E3").Offset(0, x).Value
.Fields("Year_F") = Range("E2").Offset(0, x).Value
.Fields("Units_F") = Range("E" & i).Offset(0, x).Value
.Update
' stores the new record
End With
x = x + 1
Loop
Next i
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Ce code fait exactement ce que je veux jusqu'à présent. Je sais que souhaitez ajouter un morceau qui va vérifier si l'enregistrement existe pas basé sur 4 règles: les Produits, de la Région, Quarter_F et Year_F
Si elle correspond à ces, il devra mettre à jour les autres champs Units_F, PMU). Si non, il doit exécuter le code correctement et créer un nouvel enregistrement.
Votre aide sera très appréciée, je suis coincé ici et je ne vois pas comment en sortir.
Merci
OriginalL'auteur user2225351 | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
J'ai une feuille de calcul Excel avec les données suivantes à partir de la cellule A1
J'ai une Table nommée "Liste de prix" dans ma base de données Access qui contient les données suivantes
Suivantes Excel VBA sera mise à jour de l'Accès des documents, avec le nouveau prix pour "standard" et "premium", et d'ajouter une nouvelle ligne dans la table pour "deluxe":
OriginalL'auteur Gord Thompson
Après avoir écrit cela, je viens de réaliser que vous êtes à l'aide de VBA donc, ma réponse ne fonctionne pas. Mais vous devriez être capable de suivre ce qui se passe. Voici l'idée, bien que. Et pour VBA collections ont un coup d'oeil à ceci:
VBA Collections
La dernière fois que j'ai vérifié LINQ n'a pas pu être utilisé en VBA
OriginalL'auteur Papa Burgundy
Je n'ai pas assez de réputation pour juste un commentaire sur l'une des réponses ci-dessus. La solution a été excellent, mais si vous avez une tonne de dossiers dans une ligne en boucle, il peut être plus facile pour enfermer le tout dans une boucle. J'ai aussi eu mes données dans un Tableau Excel (mais si vous avez juste un non-gamme dynamique de l'utiliser comme une gamme à la place).
C'est ça - puis j'ai fermé la base de données/etc connexions. et a Donné mon utilisateur un message disant que les données avaient été écrits.
La SEULE chose que vous avez vraiment besoin de noter ici, c'est mon userform n'a pas (encore) intégré des données de vérification de type, mais qui est mon prochain morceau de code. Sinon, vous pouvez obtenir des exceptions de l'Accès ou de certains vraiment mauvais à la recherche de données lorsque vous l'ouvrez!
OriginalL'auteur Nicholas Smith