Kaip greitai atnaujinti susietą lentelę, kai pakeičiamas išorinis failo pavadinimas

Bendrinti dabar:

Susietos lentelės gali būti fantastiškai naudingos (nors, žinoma, ne visą laiką) – ypač kai susiduriate su išorine informacija, kuri reguliariai keičiasi. Tipiškas pavyzdys gali būti, kai tiekėjas suteikia jums prieigą prie savo dabartinės mėnesinės kainos failo. Bet kas atsitiks, kai kitą mėnesį jie išduos failą, o failo pavadinimas pasikeis iš „Kainoraštis-01-01-2016“ į „Kainoraštis-01-02-2016“? Pirmas dalykas, kuris atsitiks, yra tai, kad jūsų nuoroda nutrūks, todėl turėsite ją atnaujinti rankiniu būdu. Kiekvieną kartą, kai jie keičia failo pavadinimą. Tai pasakytina ir apie lentelių pavadinimus (žinoma!). Klausiate, ar yra būdas tai padaryti greitai ir lengvai? Džiaugiamės, kad paklausėte – skaitykite toliau ir sužinokite, kaip…

Scenos nustatymas – scenarijus

Susieta lentelių tvarkyklėŠiame straipsnyje naudosiu išgalvotą scenarijų, bet aš tikiu, kad jį greitai atpažinsite!

Kiekvieną mėnesį „Acme trading“ siunčia mums atnaujintą visų naudojamų eksploatacinių medžiagų kainoraštį DataNumen. Kad žinotume, kiek kas mėnesį išleisime stacionarioms prekėms, susiejame su tuo failu savo biuro valdymo duomenų bazėje.

Pakeiskite failo pavadinimąBėda ta, kad nors failo formatas išlieka tas pats, failo pavadinimas keičiasi kiekvieną mėnesį. Praėjusį mėnesį jis buvo „kantceliarinių prekių išlaidos 2017 m. sausio mėn. xls“, o šį mėnesį – „kantceliarinių prekių išlaidos 2017 m. vasario mėn. xls“.

Tikiu, kad sutiksite nedaug pakeitimų, bet nebent patirsime sunkumų pervadindami failą rankiniu būdu (kai perkelsime seną failą iš kelio arba jį ištrysime) arba atliksime iš naujo susieti lentelę per susietą lentelių tvarkyklę programoje Access.

Kadangi nenorėjome to daryti, sukūrėme šį kodą, kad tai padarytume – daug lengviau, kaip tikiu, kad pamatysite:

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

Kodo paaiškinimas

Kaip matote, perduodame (susietos) lentelės pavadinimą kartu su naujo failo, su kuriuo lentelė turėtų būti susieta, pavadinimu. Failo pavadinime turėtų būti nurodytas visas failo kelias. Viena iš galimų sričių, su kuria galite susidurti pradžioje, yra teisingo formato nustatymas ryšio eilutei, kuri bus įterpta į kintamąjį „newConnect“. Nors yra daugybė šaltinių, kaip sužinoti teisingą formatą, vienas iš paprasčiausių būdų, kurį radau, yra tiesiog peržiūrėti dabartinės susietos lentelės ryšio eilutę. Norėdami tai padaryti, tiesiog pridėkite šią eilutę tiesiai po eilute „Set objTableDef = objDB.TableDefs(tableName)“:

Debug.Print (objTableDef.Connect)

Tai išspausdins esamą ryšio eilutę į kodo rengyklės derinimo / tiesioginio lango langą (jei to dar nematyti, paspauskite CTRL-G VBA kodo rengyklės ekrane, kad perjungtumėte tiesioginio lango matomumą prieš paleisdami kodą.

Įspėjimas

Kaip visada, nepamirškite, kad nors anksčiau pateiktas kodo fragmentas gali padėti sutaupyti laiko, kai reikia pakeisti failą, su kuriuo susieta lentelė, jis negali padėti, jei susidursite su Prieigos failo pažeidimas, todėl būtinai pasidarykite atsargines kopijas ir žinokite, kur kreiptis, jei visa kita nepavyks.

Autoriaus įvadas:

Mitchell Pond yra duomenų atkūrimo ekspertas DataNumen, Inc., kuri yra pasaulyje duomenų atkūrimo technologijų lyderė, įskaitant pataisyti SQL žalą ir Excel atkūrimo programinės įrangos produktai. Norėdami gauti daugiau informacijos, apsilankykite WWW.datanumen.com

Bendrinti dabar:

Komentarai yra uždaryti.