Koblede tabeller kan være utrolig nyttige (men ikke hele tiden selvfølgelig) – spesielt når du har å gjøre med ekstern informasjon som endres regelmessig. Et typisk eksempel kan være når en leverandør gir deg tilgang til deres gjeldende månedlige prisfil. Men hva skjer når de utsteder filen neste måned, og filnavnet endres fra "Prisliste-01-01-2016" til "Prisliste-01-02-2016"? Det første som vil skje er at koblingen din vil bryte, så du må oppdatere den manuelt. Hver gang de endrer filnavnet. Det gjelder også tabellnavn (selvfølgelig!). Er det en måte å gjøre dette raskt og enkelt spør du? Vi er glade for at du spurte – les videre og finn ut hvordan...
Setter scenen – scenariet
I denne artikkelen skal jeg bruke et fiktivt scenario – men et jeg er sikker på at du raskt vil kjenne igjen!
Hver måned sender Acme trading oss en oppdatert prisliste for alle forbruksvarer som brukes på DataNumen. For at vi skal vite hvor mye vi kommer til å bruke på stasjonært utstyr hver måned, lenker vi til den filen i vår kontoradministrasjonsdatabase.
Problemet er at selv om filformatet forblir det samme, endres filnavnet hver måned. Forrige måned var det "stasjonær caosts Jan 2017.xls", denne måneden er det "stasjonær caosts. februar 2017.xls”.
Ikke mye av en endring, jeg er sikker på at du er enig, men med mindre vi går gjennom problemer med å endre navn på filen manuelt (når vi har flyttet den gamle filen ut av veien eller slettet den), eller går gjennom prosessen med koble tabellen på nytt gjennom den koblede tabellbehandleren i Access.
Fordi vi ikke ønsket å gjøre dette, laget vi følgende kode for å gjøre det i stedet – mye enklere som jeg er sikker på at du vil se:
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) 'formatet til tilkoblingsstrengen i vårt tilfelle, for eksempel, er: ' Excel 5.0;HDR=JA;IMEX=2;DATABASE=Filnavn inkludert bane og utvidelsestype newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName objTableDef.Connect = newConnect objTableDef.RefreshLink Sett objTableDef = Ingenting Sett objDB = Ingenting End Sub
Forklarer koden
Som du kan se, sender vi det (lenkede) tabellnavnet, sammen med navnet på den nye filen som tabellen skal kobles til. Filnavnet skal inneholde hele banen til filen. Et potensielt område som du kan slite med på start får riktig format for tilkoblingsstrengen som skal plasseres i "newConnect"-variabelen. Selv om det er mange kilder for å finne ut riktig format, er en av de enkleste jeg har funnet å bare se på tilkoblingsstrengen til den gjeldende koblede tabellen. For å gjøre det, legg til følgende linje rett under "Set objTableDef = objDB.TableDefs(tableName)"-linjen:
Debug.Print (objTableDef.Connect)
Det vil skrive ut den eksisterende tilkoblingsstrengen ut i feilsøkings-/umiddelbar-vinduet til koderedigeringsprogrammet (hvis det ikke allerede er synlig, trykk CTRL-G fra VBA-koderedigeringsskjermen for å bytte synligheten til umiddelbar vinduet før du kjører koden.
En advarsel
Som alltid, ikke glem at selv om kodebiten ovenfor kan hjelpe deg å spare tid når du trenger å endre filen en tabell er koblet til, er det den ikke kan hjelpe deg hvis du støter på noen Skade på tilgangsfil, så sørg for at du beholder sikkerhetskopier og vet hvor du skal henvende deg hvis alt annet mislykkes.
Forfatterintroduksjon:
Mitchell Pond er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparere SQL-skader og excel-programvareprodukter for gjenoppretting. For mer informasjon besøk www.datanumen. Med
Legg igjen en kommentar