À l'aide d'Excel comme avant fin à l'Accès de base de données (avec VBA)
Je fais construire une petite application pour un ami et ils aimeraient être en mesure d'utiliser Excel comme l'extrémité avant. (l'INTERFACE utilisateur sera essentiellement userforms dans Excel). Ils ont un tas de données dans Excel qu'ils aimeraient être en mesure de requête, mais je ne veux pas utiliser excel comme base de données car je ne pense pas qu'il est approprié à cette fin et j'envisage d'utiliser Access. [BTW, je sais que l'Accès a ses défauts, mais il n'y a aucun budget disponible et déjà Accès à un ami PC]
Pour résumer, je suis envisage de dumping un tas de données dans Access, puis à l'aide d'Excel comme un front-end pour interroger la base de données et afficher les résultats dans un objet userform style de l'environnement.
Questions:
- Comment est-il facile de lien pour l'Accès à partir d'Excel à l'aide d'ADO /DAO? Est-il assez limité en termes de fonctionnalités, ou puis-je obtenir créatif?
- Dois-je payer une pénalité sur les performances (par rapport à l'utilisation de formulaires dans l'Accès que l'INTERFACE utilisateur)?
- En supposant que la base de données sera toujours mis à jour en utilisant ADO /DAO des commandes à partir de VBA Excel, est-ce à dire que je peux avoir plusieurs Excel utilisateurs à l'aide d'une seule base de données Access et pas de problèmes de concurrence, etc.?
- Toutes les autres choses que je devrais être au courant?
J'ai une forte Excel VBA compétences et pense que je peux surmonter Access VBA assez rapidement, mais n'a jamais vraiment fait Excel /Access lien avant. Je pourrais incorporer les données dans Excel et l'utiliser comme un quasi-base de données, mais qui me semble plus de la douleur que ce qu'il vaut (et non pas une robuste solution à long terme)
Des conseils appréciés.
Alex
- Je voudrais savoir comment cette discussion s'avère ainsi. J'ai un projet similaire que j'ai fait pour les enseignants (c'est un bulletin de notes excel app). La raison que j'ai choisi Excel est parce qu'il y a beaucoup de champs calculés qui doit être affiché et la feuille de calcul de l'INTERFACE utilisateur est juste la meilleure chose qu'il est quand il s'agit de la saisie/affichage des notes des élèves en même temps. Cependant, le maintien des données brutes est un cauchemar. Je pense que je vais le portage de l'interface pour Accéder tandis que l'interface est encore dans Excel. Je pense que pour mon but, c'est la meilleure configuration, sauf s'il existe un moyen facile de code d'une feuille de calcul UI i
Vous devez vous connecter pour publier un commentaire.
Je suis sûr que vous aurez une tonne de "ne pas faire" des réponses, et je dois dire, il y a une bonne raison. Ce n'est pas une solution idéale....
Cela étant dit, je suis allé en bas de cette route (et similaires) avant, surtout parce que le travail spécifié comme un dur exigence et je ne pouvais pas en parler autour d'elle.
Voici quelques choses à considérer: la
Il est assez straitforward. Vous êtes plus limité que vous faire les choses à l'aide d'autres outils, depuis VBA et Excel formes est un peu plus restrictif que la plupart des langages de programmation, mais il n'y a pas quelque chose qui va être un show stopper. Il fonctionne - parfois, c'est un peu moche, mais ça fonctionne. Dans ma dernière entreprise, j'ai souvent eu à faire - et à l'occasion a été l'extraction de données à partir d'Access et Oracle via VBA dans Excel.
Mon expérience est qu'il y a vraiment une perf. pénalité en faisant cela. Je n'ai jamais soigné (dans mon cas d'utilisation, les choses étaient assez petites qu'il était raisonnable), mais en allant Excel<->l'Accès est beaucoup plus lent que juste travailler en Accès direct. Une partie de cela dépend de ce que vous voulez faire....
Dans mon cas, la chose qui semble être l'absolu le plus lent (et très douloureux) a essayé de remplir des feuilles de calcul Excel basé sur les données d'Accès. Ce n'était pas amusant, et il est souvent très lente. Si vous devez aller en bas de cette route, assurez-vous de tout faire avec Excel cachés ou invisibles, ou de la refonte sera absolument vous tuer.
Vous êtes assez bien à l'aide d'Excel en tant que client de la même façon que vous utilisez une application WinForms ou de tout autre outil. L'ADO/DAO clients pour l'Accès sont très bonnes, de sorte que vous ne sera probablement pas rencontré de problèmes de concurrence.
Cela étant dit, l'Accès n'est PAS à l'échelle. Cela fonctionne très bien si vous avez 2 ou 3 (ou même 10) utilisateurs. Si vous allez avoir à 100, vous aurez probablement courir dans des problèmes. Aussi, j'ai tendance à trouver que l'Accès demande un entretien régulier afin de ne pas avoir de problèmes de corruption. Des sauvegardes régulières de l'Accès DB sont un must. Le compactage de la base de données access sur une base régulière aidera à prévenir la corruption de base de données, dans mon expérience.
Que vous faites de cette façon difficile. À l'aide d'Excel pour frapper l'Accès va être beaucoup plus de travail que de simplement en utilisant l'Accès direct.
Je vous recommande de regarder dans l'Accès VBA API - plus de il est le même que Excel, de sorte que vous aurez une petite courbe d'apprentissage. Les pièces qui sont différents juste rendre cela plus facile. Vous aurez aussi tous les avantages de l'Accès de rapports et de Formulaires, qui sont beaucoup plus axée sur les données que celles dans Excel. La déclaration peut être grande pour ce genre de choses, et d'avoir les Macros et les Rapports de rendre la vie plus facile dans le long terme. Si l'utilisateur va être d'utiliser des formulaires pour tout gérer, faire des formes dans l'Accès sera très, très similaires à les faire dans Excel, et semblent presque identiques, mais fera tout ce qui est plus rapide et plus fluide.
Je le fais tout le temps. Si vous utilisez ADO, vous n'êtes pas vraiment à l'aide de l'Accès, mais de Jet, de la base de données. Cela signifie que n'importe qui avec Excel, vous pouvez utiliser l'application - Accès non requis. Oh, je dois le mentionner, l'endroit où je travail a acheté un tas de Bureau de Petite Entreprise licences - pas d'Accès. Avant de travailler ici, j'aurais cru que ceux qui ont Excel auraient également Accès. Pas si.
J'ai créer une classe pour chaque table dans Access. J'ai très rarement d'exécuter des requêtes par le biais d'ADO, au lieu-je garder cette logique dans les modules de classe. J'ai lu dans une instruction SELECT et d'écriture et de mise à JOUR ou d'INSÉRER à l'aide de la méthode Execute de l'ADODB.Objet de connexion.
Voir http://www.dailydoseofexcel.com/archives/2008/12/21/vba-framework-ii/
si vous voulez voir comment j'ai configuré mon code.
Pour répondre à vos questions: Il y aura une petite courbe d'apprentissage pour vous si vous savez déjà Excel VBA, mais il y aura quelques apprendre à faire, vous devrez payer une pénalité de performances plus que tout faire dans l'Accès, mais il n'est pas si mal, et vous seul pouvez décider si ça vaut le coup; et vous pouvez avoir plusieurs personnes d'accéder à la base de données.
, Sautez simplement la partie excel - l'utilisateur d'excel formulaires sont juste une mauvaise version de l'homme de la manière la plus robuste des formulaires Access. Aussi un Accès VBA est identique à Excel VBA - vous avez juste à apprendre l'Accès " modèle d'objet. Avec une simple application, vous n'aurez pas besoin d'écrire beaucoup VBA de toute façon parce que, dans un Accès, vous pouvez le fil des choses ensemble assez facilement.
Si l'utilisateur final a Accès, il peut être plus facile de développer le tout en Accès. L'accès a certains WYSIWYG forme d'outils de conception intégrés.
Sauf si il y a un fort avantage à l'exécution de votre formulaire utilisateur dans Excel puis j'irais avec un 100% solution d'Accès qui permettrait d'exporter les rapports et les données à Excel sur une base ad-hoc.
De ce que vous décrivez, l'Accès semble le plus fort concurrent comme il est construit pour de travail avec des données:
vous avez beaucoup plus d'outils à votre disposition pour résoudre tous les problèmes de données que d'avoir à aller dans les limites d'Excel et de chausse-pied en devenant Accès...
Que pour vos questions:
Très facile. Il y a eu quelques autres questions sur DONC sur le sujet.
Voir, par exemple, cette une et que l'on.
Ne sais pas, mais je suppose qu'il pourrait y avoir une petite pénalité.
La plus grande difficulté que je vois, c'est d'essayer d'obtenir toutes les fonctionnalités que l'Accès vous donne et de re-création de certains de ces dans Excel.
Oui, vous pouvez avoir plusieurs Excel utilisateurs et une seule base de données Access.
Ici encore, l'utilisation d'un Accès en tant que front-end et de conserver les données dans une base de données Access sur votre réseau aurait plus de sens et c'est facile comme bonjour, il y a même un assistant d'Accès pour vous y aider: il est à seulement 1 clic.
Vraiment, comme la plupart des autres personnes l'ont dit, prendre un petit peu de temps pour se familiariser avec l'Accès, il vous permettra d'économiser beaucoup de temps et d'ennuis.
Vous le savez peut-Excel mieux, mais si vous avez passé 80% de la façon déjà si vous connaissez VBA et sont familiers avec le modèle d'objet Office.
D'autres avantages que de le faire dans l'Accès: la Access 2007 runtime est gratuit, ce qui signifie que si vous étiez à déployer app pour 1 ou 30 PC, il vous coûterait le même: rien.
Vous avez seulement besoin d'une version complète d'Access pour votre travail de développement (l'Exécution n'a pas les designers).
Cela dépend vraiment de l'application. Pour un projet normal, je vous conseille d'utiliser seulement l'Accès, mais parfois, les besoins sont spécifiques et une feuille de calcul Excel peut-être plus approprié.
Par exemple, dans un projet que j'avais à développer pour un ancien employeur, de la nécessité de donner accès à des personnes différentes formes(pré-remplie avec des données différentes pour chaque personne) et de les compléter, puis de le ré-importer les données.
Depuis le formulaire a l'aide de lourds calculs, il ne fait plus de sens pour construire dans Excel.
Les classeurs Excel pour les différentes personnes qui ont été construits à partir d'un modèle à l'aide de VBA, puis enregistré dans un bon endroit, avec les droits d'accès sur le dossier.
Tous les classeurs étaient attachés comme des tables Externes de la des classeurs, en utilisant les plages nommées. J'ai pu ensuite d'interroger les classeurs de l'Application Access. Toutes les choses ont été faites à partir de la db, mais à la fin les utilisateurs n'ont accès qu'à leur classeur.
Développer un Excel/Access application de cette manière a été une expérience agréable et l'INTERFACE est plus conviviale que celle qui aurait été à l'aide de l'Accès.
Je dois dire que dans ce cas, il aurait fallu beaucoup plus de temps à le faire dans l'Accès qu'il a pris à l'aide d'Excel. Aussi, l'Objet de l'Application du Modèle semble mieux si dans Excel que dans l'Accès.
Si vous prévoyez d'utiliser Excel comme un front-end, n'oubliez pas de verrouiller toutes les cellules, mais le modifiable et n'ont pas peur d'utiliser masqué lignes et columnns (pour construire les tableaux de sortie pour l'accès de base de données, d'effectuer des calculs intermédiaires, etc).
Vous devez également désactiver autocalculation lors de l'importation de données.
C'est assez facile et efficace à utiliser Excel comme outil d'information pour l'Accès aux données.
Un rapide "sans programmation" méthode consiste à définir une Liste ou d'un Tableau croisé dynamique, lié à votre source de Données Externe. Mais c'est hors de portée pour Stackoverflow.
Une approche programmatique peut être très simple:
Que c'est !
Compte tenu de la facilité d'utilisation de l'Accès, je ne vois pas de raison convaincante pour utiliser Excel à tous les autres que pour exporter des données pour les calculs. L'accès est conçu pour créer facilement des formulaires de renseignements et, à mon avis, sera ordres de grandeur plus facile et moins de temps que l'aide d'Excel. Quelques heures pour apprendre le modèle d'objet Access va payer pour lui-même de nombreuses fois en termes de temps et d'efforts.
Je l'ai fait dans un projet de mine. J'ai utilisé MDB pour stocker les données sur des factures et utilisé Excel pour calculer, en donnant à l'utilisateur la possibilité de l'adapter.
Dans ce cas, la meilleure solution est:
De ne pas utiliser tout ADO/DAO dans Excel. J'ai mis en place tout comme des fonctions publiques dans la MDB modules et les a appelés directement à partir d'Excel. Vous pouvez retourner, même les plus complexes d'objets de données, comme des tableaux de chaînes de caractères, etc en appelant MDB fonctions avec arguments nécessaires. Ceci est similaire à l'architecture client/serveur d'applications web modernes: vous application web ne le rendu et l'interaction de l'utilisateur, la base de données et la couche intermédiaire est alors sur le côté serveur.
Utiliser des formulaires Excel pour l'interaction de l'utilisateur et pour la visualisation des données.
D'habitude, j'ai une dernière feuille avec quelques noms de régions pour les paramètres: le chemin d'accès aux fichiers MDB, certains paramètres (courant d'utilisateur, mot de passe si nécessaire, etc.) - de sorte que vous pouvez facilement adapter votre Excel de la mise en œuvre d'emplacement différent de vous "back-end" de données.
Connecter Excel à Access à l'aide de VBA est très utile je l'utilise dans mon métier de tous les jours. La chaîne de connexion que j'utilise est selon le programme trouvé dans le lien ci-dessous. Le programme peut être automatisé afin de faire de multiples connexions ou les tâches de tir, mais la connexion de base de code semble le même. Bonne chance!
http://vbaexcel.eu/vba-macro-code/database-connection-retrieve-data-from-database-querying-data-into-excel-using-vba-dao
Il Dépend de la quantité de fonctionnalités que vous attendez par Excel<->Accéder à la solution. Dans de nombreux cas, où vous n'avez pas le budget pour obtenir une demande complète de la solution, ces petits utilitaires fonctionne. Si la Portée du projet est limité alors je pencherais pour cette solution, car excel ne vous donnent la flexibilité de la conception de feuilles de calcul en fonction de vos besoins et vous pouvez ensuite utiliser ces préconçus feuilles pour les utilisateurs. La conception d'une feuille de calcul comme la forme de l'Accès est plus long et difficile et ne nécessite certains ActiveX. C'objet peut ne pas seulement la manipulation des données, mais présentant dans la feuille de calcul comme standards (alors cette solution fonctionne avec une portée limitée.
Vous pouvez essayer quelque chose comme XLLoop. Cela vous permet de mettre en œuvre les fonctions d'excel (Udf) sur un serveur externe (implémentations de serveur dans de nombreuses langues différentes sont fournis).
Par exemple, vous pouvez utiliser une base de données MySQL et le serveur web Apache, puis d'écrire les fonctions en PHP pour servir les données de vos utilisateurs.
BTW, je travaille sur le projet, alors laissez-moi savoir si vous avez des questions.