Propojené tabulky mohou být fantasticky užitečné (i když samozřejmě ne vždy) - zvláště pokud máte co do činění s externími informacemi, které se pravidelně mění. Typickým příkladem může být situace, kdy vám dodavatel poskytne přístup ke svému aktuálnímu měsíčnímu cenovému souboru. Co se ale stane, když příští měsíc vydají soubor a název souboru se změní z „Ceník-01-01-2016“ na „Ceník-01-02-2016“? První věc, která se stane, je, že se váš odkaz rozbije, takže jej budete muset ručně aktualizovat. Pokaždé, když změní název souboru. To platí i pro názvy tabulek (samozřejmě!). Existuje způsob, jak to udělat rychle a snadno, ptáte se? Jsme rádi, že jste se zeptali - čtěte dál a zjistěte, jak ...
Nastavení scény - scénář
V tomto článku použiji fiktivní scénář - ale jsem si jist, že ho rychle poznáte!
Obchodování Acme nám každý měsíc zasílá aktualizovaný ceník všech spotřebních doplňků používaných na DataNumen. Abychom věděli, kolik každý měsíc utratíme, připojíme se k tomuto souboru v naší databázi správy kanceláře.
Potíž je v tom, že i když formát souboru zůstává stejný, název souboru se mění každý měsíc. Minulý měsíc to bylo „stacionární costs Jan 2017.xls “, tento měsíc je to„ stacionární costs únor 2017.xls “.
Určitě nebudete moc měnit, určitě budete souhlasit, ale pokud se nedostaneme do potíží s ručním přejmenováním souboru (jakmile jsme přesunuli starý soubor z cesty nebo jej odstranili), nebo neprojdeme procesem opětovné propojení tabulky pomocí správce propojených tabulek v Accessu.
Protože jsme to nechtěli udělat, vytvořili jsme následující kód, abychom to udělali - mnohem jednodušší, jak jsem si jist, že uvidíte:
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
Vysvětlení kódu
Jak vidíte, předáme (propojený) název tabulky spolu s názvem nového souboru, ke kterému by měla být tabulka propojena. Název souboru by měl obsahovat úplnou cestu k souboru. Jedna potenciální oblast, se kterou se můžete potýkat na start získává správný formát pro připojovací řetězec, který se má umístit do proměnné „newConnect“. I když existuje spousta zdrojů pro zjištění správného formátu, jedním z nejjednodušších, které jsem našel, je jednoduše podívat se na připojovací řetězec aktuální propojené tabulky. Chcete-li to provést, jednoduše přidejte následující řádek přímo pod řádek „Set objTableDef = objDB.TableDefs (tableName)“:
Debug.Print (objTableDef.Connect)
Tím se vytiskne existující připojovací řetězec do okna ladění / okamžitého editoru kódu (pokud to již není viditelné, stisknutím klávesy CTRL-G na obrazovce editoru kódu VBA přepnete viditelnost okna Immediate před spuštěním kódu.
Varování
Jako vždy, nezapomeňte, že zatímco výše uvedený fragment kódu vám pomůže ušetřit čas, když potřebujete změnit soubor, ke kterému je tabulka propojena, co vám nemůže udělat, je pomoci vám, když narazíte na nějaký Přístup k poškození souboru, takže si nezapomeňte ponechat zálohy a vědět, kam se obrátit, pokud selžou všechny ostatní.
Úvod autora:
Mitchell Pond je expert na obnovu dat v DataNumen, Inc., která je světovým lídrem v oblasti technologií pro obnovu dat, včetně opravit poškození SQL a excelové softwarové produkty pro obnovu. Pro více informací navštivte www.datanumen.com