Les tableaux liés peuvent être extrêmement utiles (mais pas tout le temps bien sûr) - en particulier lorsque vous avez affaire à des informations externes qui changent régulièrement. Un exemple typique pourrait être lorsqu'un fournisseur vous donne accès à son fichier de prix mensuel actuel. Mais que se passe-t-il lorsqu'ils publient le fichier le mois suivant et que le nom du fichier passe de "Pricelist-01-01-2016" à "Pricelist-01-02-2016" ? La première chose qui se produira est que votre lien se cassera, vous devrez donc le mettre à jour manuellement. Chaque fois qu'ils changent le nom du fichier. Cela vaut aussi pour les noms de table (bien sûr !). Existe-t-il un moyen de le faire rapidement et facilement, demandez-vous? Nous sommes heureux que vous ayez demandé - lisez la suite et découvrez comment…
Mise en scène – le scénario
Dans cet article, je vais utiliser un scénario fictif – mais je suis sûr que vous le reconnaîtrez rapidement !
Chaque mois, Acme trading nous envoie une liste de prix mise à jour pour tous les consommables utilisés à DataNumen. Afin que nous sachions combien nous dépenserons en papeterie chaque mois, nous établissons un lien vers ce fichier dans notre base de données de gestion de bureau.
Le problème, c'est que même si le format du fichier reste le même, son nom change chaque mois. Le mois dernier, il s'appelait « stationary costs Jan 2017.xls », ce mois-ci, c'est « stationary costs Feb 2017.xls ».
Pas beaucoup de changement, je suis sûr que vous serez d'accord, mais à moins que nous ne prenions la peine de renommer le fichier manuellement (une fois que nous avons déplacé l'ancien fichier ou que nous l'avons supprimé), ou que nous passions par le processus de reconnecter la table via le gestionnaire de tables liées dans Access.
Parce que nous ne voulions pas faire cela, nous avons créé le code suivant pour le faire à la place - beaucoup plus facile comme je suis sûr que vous le verrez :
Public Sub UpdateLink (tableName As String, newFileName As String) Dim objDB As Database Dim objTableDef As TableDef Dim newConnect as String Set objDB = CurrentDb Set objTableDef = objDB.TableDefs(tableName) 'format of the connection string in our case, for example, is: ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Set objTableDef = Nothing Set objDB = Nothing End Sub
Explication du code
Comme vous pouvez le constater, nous transmettons le nom de la table (liée), ainsi que le nom du nouveau fichier auquel la table doit être liée. Le nom du fichier doit inclure le chemin d'accès complet. L'une des difficultés que vous pourriez rencontrer au début est de déterminer le format correct de la chaîne de connexion à insérer dans la variable « newConnect ». Bien qu'il existe de nombreuses ressources pour trouver ce format, la méthode la plus simple que j'ai trouvée consiste à consulter la chaîne de connexion de la table liée actuelle. Pour ce faire, ajoutez simplement la ligne suivante juste après la ligne « Set objTableDef = objDB.TableDefs(tableName) » :
Debug.Print (objTableDef.Connect)
Cela imprimera la chaîne de connexion existante dans la fenêtre de débogage/immédiate de l'éditeur de code (si elle n'est pas déjà visible, appuyez sur CTRL-G depuis l'écran de l'éditeur de code VBA pour basculer la visibilité de la fenêtre immédiate avant d'exécuter le code.
Un avertissement
Comme toujours, n'oubliez pas que même si l'extrait de code ci-dessus peut vous aider à gagner du temps lorsque vous devez modifier le fichier auquel une table est liée, ce qu'il ne peut pas faire, c'est vous aider si vous en rencontrez Accéder aux fichiers endommagés, assurez-vous donc de conserver des sauvegardes et de savoir vers qui vous tourner si tout le reste échoue.
Introduction de l'auteur:
Mitchell Pond est un expert en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris réparer les dommages SQL et des produits logiciels de récupération Excel. Pour plus d'informations, visitez www.datanumen.com