A linkelt táblázatok fantasztikusan hasznosak lehetnek (bár természetesen nem mindig) – különösen, ha rendszeresen változó külső információkkal van dolgunk. Tipikus példa lehet az, amikor egy szállító hozzáférést biztosít az aktuális havi árfájljához. De mi történik, ha a következő hónapban kiadják a fájlt, és a fájl neve „01-01-2016-ről” „01-02-2016-re” változik? Az első dolog, ami meg fog történni, hogy a link megszakad, ezért manuálisan kell frissítenie. Minden alkalommal, amikor megváltoztatják a fájl nevét. Ez vonatkozik a táblanevekre is (természetesen!). Kérdezi, van erre mód gyorsan és egyszerűen? Örülünk, hogy megkérdezte – olvasson tovább, és megtudja, hogyan…
A helyszín beállítása – a forgatókönyv
Ebben a cikkben egy kitalált forgatókönyvet fogok használni – de egyet biztosan gyorsan felismersz!
Az Acme trading minden hónapban frissített árlistát küld nekünk az összes használt fogyóeszközről DataNumen. Annak érdekében, hogy tudjuk, mennyit költünk helyhez kötött eszközökre havonta, hivatkozunk erre a fájlra az irodai adatbázisunkban.
A probléma az, hogy bár a fájl formátuma ugyanaz marad, a fájlnév minden hónapban változik. Múlt hónapban „állomásszerszám költségek 2017. január.xls” volt, ebben a hónapban pedig „állomásszerszám költségek 2017. február.xls”.
Nem sok változás, biztos vagyok benne, hogy egyetért, de hacsak nem esünk át a fájl manuális átnevezésével (miután a régi fájlt elmozdítottuk az útból, vagy töröltük), vagy a táblázat újrakapcsolása az Access csatolt táblakezelőjén keresztül.
Mivel nem akartuk ezt megtenni, helyette létrehoztuk a következő kódot – sokkal könnyebben, ahogy biztosan látni fogja:
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
A kód magyarázata
Amint látható, átadjuk a (csatolt) tábla nevét, valamint az új fájl nevét, amelyhez a táblát csatolni kell. A fájlnévnek tartalmaznia kell a fájl teljes elérési útját. Az elején egy lehetséges probléma lehet a megfelelő formátum megtalálása a kapcsolódási karakterlánchoz, amelyet a „newConnect” változóba kell helyezni. Bár számos forrás létezik a helyes formátum megtalálására, az egyik legegyszerűbb, amit találtam, az, ha egyszerűen megnézzük az aktuális csatolt tábla kapcsolódási karakterláncát. Ehhez egyszerűen adjuk hozzá a következő sort közvetlenül a „Set objTableDef = objDB.TableDefs(tableName)” sor alá:
Debug.Print (objTableDef.Connect)
Ez kinyomtatja a meglévő kapcsolati karakterláncot a kódszerkesztő hibakeresési/azonnali ablakába (ha ez még nem látható, nyomja meg a CTRL-G billentyűkombinációt a VBA kódszerkesztő képernyőn belül, hogy átkapcsolja az azonnali ablak láthatóságát a kód futtatása előtt.
Egy figyelmeztetés
Mint mindig, ne felejtse el, hogy bár a fenti kódrészlet segítségével időt takaríthat meg, amikor módosítania kell a táblázathoz csatolt fájlt, de nem tud segíteni, ha bármilyen A hozzáférési fájl sérülése, ezért ügyeljen arra, hogy készítsen biztonsági másolatot, és tudja, hová forduljon, ha minden más nem sikerül.
Szerző Bevezetés:
Mitchell Pond adat-helyreállítási szakértő DataNumen, Inc., amely világelső az adat-helyreállítási technológiák területén, beleértve SQL károk javítása és Excel helyreállítási szoftvertermékek. További információért látogasson el www.datanumen.com