0
votes

Peut accéder à lire le contenu d'un fichier Excel sans l'importer sur une table?

est-il possible de lire la ligne d'en-tête d'un classeur Excel pour déterminer si certains domaines existent avant d'importer sur une table? J'aimerais qu'il y ait une notification si ces champs sont manquants avant que l'importation ne se produise.

Ma base de données d'accès nécessite que les utilisateurs d'importer des données à partir de fichiers Excel générés par un système différent dans lequel les utilisateurs peuvent choisir les champs à exporter. Parfois, les utilisateurs échouent accidentellement de sélectionner certains champs requis pour que ma base de données fonctionne, ce qui provoque des erreurs, puis je reçois des courriels. Il n'existe actuellement aucune erreur d'importation si les champs sont manquants, ce qui est bien, car tous les champs sont nécessaires, juste certains.

Pour référence, il s'agit du code que j'utilise pour importer en ce moment. Il court bien et fait ce qu'il est censé: xxx


0 commentaires

3 Réponses :


0
votes

tandis que c'est certainement possible d'utiliser VBA pour lire les en-têtes de colonne dans une feuille de calcul Excel en interfaçant avec Excel à l'aide du modèle d'objet ActiveX, une approche plus facile peut être la suivante:

Importer la feuille de calcul Excel dans une table temporaire MS Access, puis utilisez VBA pour itérer sur les champs du tableau nouvellement créé, essais pour la présence ou l'absence de l'ensemble de champs dont vous avez besoin pour vos requêtes.

Pour valider l'ensemble des champs présents dans La table temporaire, vous pouvez utiliser une fonction telle que: xxx

fourni avec le nom de la table temporaire et un tableau des champs dont vous avez besoin pour être présent. Dans ce tableau, la fonction ci-dessus retournera true si tous les champs de la matrice sont présents, sinon false si n'importe quel champ de la matrice est manquant dans la table, par exemple: < / p> xxx

Si un certain nombre de champs obligatoires sont absents, vous pouvez ensuite notifier l'utilisateur en conséquence; sinon, si tous les champs obligatoires sont présents, vous pouvez ensuite insérer les données des champs requis dans la table utilisée par vos requêtes à l'aide d'une simple requête d'append.


0 commentaires

0
votes

Utilisez

DoCmd.TransferSpreadsheet acLink, ..


0 commentaires

0
votes

Vous pouvez créer une requête pour rechercher une feuille de calcul de recherche sans ouverture ni liaison.

SELECT *
FROM [Sheet1$] IN 'C:\Path\to\File\ExcelFile.xlsx'[Excel 12.0;HDR=No;IMEX=0;];


2 commentaires

C'est ça, ça a fonctionné parfaitement. Je pense que les autres réponses fonctionnent aussi, mais c'est la plus simple et la plus directe. Je n'avais aucune idée que vous pourriez même faire cela avec une déclaration sélectionnée.


Bien sûr, son bus presque magique;) Il manque toujours d'un lien vers une bonne documentation. Je vais ajouter si trouvé.