Sådan opdateres du hurtigt en sammenkædet tabel, når det eksterne filnavn ændres

Sammenkædede tabeller kan være fantastisk nyttige (selvom ikke hele tiden selvfølgelig) - især når du har at gøre med ekstern info, der regelmæssigt ændres. Et typisk eksempel kan være, når en leverandør giver dig adgang til deres aktuelle månedlige prisfil. Men hvad sker der, når de udsteder filen i næste måned, og filnavnet ændres fra “Prisliste-01-01-2016” til “Prisliste-01-02-2016”? Den første ting, der vil ske, er, at dit link går i stykker, så du bliver nødt til at opdatere det manuelt. Hver gang de ændrer filnavnet. Det gælder også for tabelnavne (selvfølgelig!). Er der en måde at gøre dette hurtigt og nemt, spørger du? Vi er glade for at du spurgte - læs videre og find ud af hvordan ...

Indstilling af scenen - scenariet

Tilknyttet tabel managerI denne artikel vil jeg bruge et fiktivt scenario - men et, jeg er sikker på, at du hurtigt vil genkende!

Hver måned sender Acme-handel os en opdateret prisliste for alle forbrugsvarer, der bruges på DataNumen. For at vi ved, hvor meget vi bruger på stationær hver måned, linker vi til den fil i vores kontoradministrationsdatabase.

Skift filnavnetProblemet er, at selvom filformatet forbliver det samme, ændres filnavnet hver måned. Sidste måned var det "brevpapiromkostninger jan. 2017.xls", denne måned er det "brevpapiromkostninger feb. 2017.xls".

Ikke meget af en ændring, jeg er sikker på, at du er enig, men medmindre vi går igennem besværet med at omdøbe filen manuelt (når vi har flyttet den gamle fil ud af vejen eller slettet den) eller gennemgår processen med genforbindelse af tabellen gennem den linkede tabeladministrator i Access.

Fordi vi ikke ønskede at gøre dette, oprettede vi følgende kode for at gøre det i stedet - meget lettere 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)

    '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

Forklaring af koden

Som du kan se, sender vi navnet på den (sammenkædede) tabel sammen med navnet på den nye fil, som tabellen skal linkes til. Filnavnet skal indeholde den fulde sti til filen. Et potentielt område, hvor du kan have problemer i starten, er at finde det korrekte format til forbindelsesstrengen, der skal placeres i variablen "newConnect". Selvom der findes masser af kilder til at finde det korrekte format, er et af de nemmeste, jeg har fundet, blot at se på forbindelsesstrengen for den aktuelle sammenkædede tabel. For at gøre det skal du blot tilføje følgende linje lige under linjen "Set objTableDef = objDB.TableDefs(tableName)":

Debug.Print (objTableDef.Connect)

Det vil udskrive den eksisterende forbindelsesstreng ud i fejlretningsvinduet / det øjeblikkelige vindue i kodeeditoren (hvis det ikke allerede er synligt, skal du trykke på CTRL-G fra skærmbilledet VBA-kodeditor for at skifte synlighed af det øjeblikkelige vindue inden kørsel af koden.

En advarsel

Som altid skal du ikke glemme, at mens kodestykket ovenfor kan hjælpe dig med at spare tid, når du har brug for at ændre filen, som en tabel er knyttet til, men det, den ikke kan gøre, er at hjælpe dig, hvis du støder på nogen Adgang til filskader, så sørg for at holde sikkerhedskopier og vide, hvor du skal henvende dig, hvis alt andet fejler.

Forfatter Introduktion:

Mitchell Pond er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparere SQL-skader og excel-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.