Comment une vierge MS Accès base de données créée à l'aide de VBA?
Je suis un noob total en essayant de créer une nouvelle base de données MS Access à l'aide de VBA dans Excel. Je veux le nom de la nouvelle base de données "tblImport". C'est le code Im en utilisant:
Sub makedb()
Dim accessApp As Access.Application
Set accessApp = New Access.Application
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera
accessApp.Quit
Set accessApp = Nothing
End Sub
Je reçois le message d'erreur suivant:
"Erreur d'exécution 3001: Application Définie ou d'un Objet Défini Erreur"
Que puis-je faire?
OriginalL'auteur steinbitur | 2013-08-04
Vous devez vous connecter pour publier un commentaire.
Le nom de la locale constante dans le CreateDatabase méthode est mauvaise:
Ce:
accessApp.DBEngine.CreateDatabase "C:\tblImport.accdb", dbLangGenera
Devrait être:
accessApp.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL
Changement et votre code devrait fonctionner. (Pour moi au moins).
++ Yup qui fonctionne mais qui n'est pas la raison pour laquelle le message d'erreur : -) Voir ma réponse.
OriginalL'auteur jpw
Vieille question, mais il a été utile pour moi. Semble que vous n'avez même pas besoin d'Accéder à l'objet.
fonctionne très bien pour moi.
Access.Application
instance. Mais il disparaît immédiatement après la fin deCreateDatabase
.Bon à savoir. C'est moins de code, de toute façon.
Je n'ai pas s'opposer à cette ligne en particulier, mais je suggère fortement contre le commentaire de la philosophie: ne pas avoir d'erreur de rattrapage est également à moins de code, en laissant l'écran mise à jour est moins de code, etc. Il est rare, en vba, où moins de lignes de code traduit à la fois plus robuste et la mise en œuvre et une plus grande efficacité, et conduit souvent à des ni.
OriginalL'auteur brainac
Vous devez utiliser la première méthode, si vous avez l'intention d'utiliser l'automatisation de l'objet que vous avez créé. Vous pouvez ouvrir les formulaires, utilisez les instructions DoCmd, etc., tout simplement en le faisant précéder chaque instruction "accessApp." Par exemple, j'utilise TempVars pour contenir les données de l'utilisateur. Je peux ouvrir une base de données à l'aide de l'automatisation, puis faire
accessApp.TempVars.Add "CurrentUser", TempVars.CurrentUser
pour passer le CurrentUser valeur de l'actif de la base de données de la nouvelle base de données.
Quand tout ce que vous voulez faire est de créer une nouvelle base de données pour faire une fonction telle que
DoCmd.TransferDatabase
sur, vous pouvez simplement utiliserAccess.DBEngine.CreateDatabase "D:\tblImport.accdb", DB_LANG_GENERAL
OriginalL'auteur topher23
Vieille Question. Voici mes deux cents. Vous avez une faute de frappe...
dbLangGenera
devrait êtredbLangGeneral
Plus à ce sujet dans Espace de travail.CreateDatabase Méthode (DAO)
De vote pour fermer cette question par Traiter les questions avec des réponses évidentes
De l'essayer. Les travaux de cette.
MODIFIER: Va supprimer cette réponse et de poster un commentaire une fois que le poste est fermé.
OriginalL'auteur Siddharth Rout