Як швидко оновити пов’язану таблицю, коли змінено ім’я зовнішнього файлу

Поділитися зараз:

Зв’язані таблиці можуть бути фантастично корисними (хоча, звичайно, не весь час) - особливо коли ви маєте справу із зовнішньою інформацією, яка регулярно змінюється. Типовим прикладом може бути, коли постачальник надає вам доступ до їх поточного щомісячного файлу цін. Але що трапляється, коли вони видають файл наступного місяця, а ім’я файлу змінюється з «Прайс-лист 01-01-2016» на «Прайс-лист 01-02-2016»? Перше, що трапиться, це те, що ваше посилання порветься, тому вам доведеться оновити його вручну. Кожного разу, коли вони змінюють назву файлу. Це стосується і назв таблиць (звичайно!). Чи є спосіб зробити це швидко і легко, запитаєте ви? Ми раді, що ви запитали - читайте далі і дізнавайтесь, як…

Постановка сцени - сценарій

Менеджер зв’язаних таблицьУ цій статті я буду використовувати вигаданий сценарій - але той, який я впевнений, ви швидко розпізнаєте!

Щомісяця компанія Acme trading надсилає нам оновлений прайс-лист на всі витратні матеріали, що використовуються на сайті DataNumen. Щоб ми знали, скільки щомісяця витрачатимемо на нерухомість, ми робимо посилання на цей файл у нашій базі даних управління офісом.

Змініть ім'я файлуПроблема полягає в тому, що, хоча формат файлу залишається незмінним, його назва змінюється щомісяця. Минулого місяця це було «витрати на канцелярські товари за січень 2017 р. xls», цього місяця — «витрати на канцелярські товари за лютий 2017 р. xls».

Я не впевнений, що ви погодитесь, але якщо ми не зазнаємо проблем із перейменуванням файлу вручну (як тільки ми перемістимо старий файл із місця чи видалимо його) або не пройдемо процес повторне зв'язування таблиці через пов'язаний менеджер таблиць у Access.

Оскільки ми не хотіли цього робити, ми створили наступний код для цього - набагато простіше, оскільки я впевнений, що ви побачите:

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

Пояснення коду

Як бачите, ми передаємо назву (зв'язаної) таблиці разом з назвою нового файлу, з яким слід зв'язати таблицю. Назва файлу повинна містити повний шлях до файлу. Однією з потенційних проблем, з якою ви можете зіткнутися на початку, є отримання правильного формату рядка підключення, який потрібно помістити у змінну «newConnect». Хоча існує багато джерел для пошуку правильного формату, одне з найпростіших, яке я знайшов, — це просто подивитися на рядок підключення поточної зв'язаної таблиці. Щоб зробити це, просто додайте наступний рядок безпосередньо під рядком «Set objTableDef = objDB.TableDefs(tableName)»:

Debug.Print (objTableDef.Connect)

Це надрукує наявний рядок підключення до налагоджувального / негайного вікна редактора коду (якщо це ще не видно, натисніть CTRL-G з екрана редактора коду VBA, щоб переключити видимість безпосереднього вікна перед запуском коду.

Попередження

Як завжди, не забувайте, що хоча фрагмент коду вище може допомогти вам заощадити час, коли вам потрібно змінити файл, до якого пов’язана таблиця, але він не може зробити, це допоможе вам, якщо ви зіткнетеся з Пошкодження файлу доступу, тому обов’язково зберігайте резервні копії та знайте, куди звертатися, якщо все інше не вдається.

Вступ автора:

Мітчелл Понд - фахівець з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі виправити пошкодження SQL - - та програмні продукти Excel для відновлення. Для отримання додаткової інформації відвідайте WWW.datanumen.com

Поділитися зараз:

Коментарі закриті.