Så här uppdaterar du snabbt en länkad tabell när det externa filnamnet ändras

Länkade tabeller kan vara fantastiskt användbara (men naturligtvis inte hela tiden) - särskilt när du har att göra med extern information som regelbundet ändras. Ett typiskt exempel kan vara när en leverantör ger dig tillgång till sin nuvarande månadsprisfil. Men vad händer när de utfärdar filen nästa månad och filnamnet ändras från "Prislista-01-01-2016" till "Prislista-01-02-2016"? Det första som kommer att hända är att din länk går sönder, så du måste uppdatera den manuellt. Varje gång de ändrar filnamnet. Det gäller även för bordsnamn (förstås!). Finns det ett sätt att göra detta snabbt och enkelt frågar du? Vi är glada att du frågade - läs vidare och ta reda på hur ...

Ställa in scenen - scenariot

Länkad bordshanterareI den här artikeln ska jag använda ett fiktivt scenario - men ett jag är säker på att du snabbt kommer att känna igen!

Varje månad skickar Acme-handel en uppdaterad prislista för alla förbrukningsvaror som används på DataNumen. Så att vi vet hur mycket vi kommer att spendera på stillastående varje månad, länkar vi till den filen i vår kontorshanteringsdatabas.

Ändra filnamnetProblemet är att även om filformatet förblir detsamma, så ändras filnamnet varje månad. Förra månaden var det "kontorskostnader jan 2017.xls", den här månaden är det "kontorskostnader feb 2017.xls".

Inte mycket av en förändring Jag är säker på att du håller med, men om vi inte går igenom problemet med att byta namn på filen manuellt (när vi har flyttat den gamla filen ur vägen eller raderat den), eller genomgår länka tabellen igen genom den länkade tabellhanteraren i Access.

Eftersom vi inte ville göra detta skapade vi följande kod för att göra det istället - mycket lättare som jag säkert kommer att 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

Förklara koden

Som du kan se skickar vi namnet på (det länkade) tabellen, tillsammans med namnet på den nya filen som tabellen ska länkas till. Filnamnet bör inkludera hela sökvägen till filen. Ett potentiellt område som du kan ha svårt med i början är att hitta rätt format för anslutningssträngen att placera i variabeln "newConnect". Även om det finns många källor för att hitta rätt format, är ett av de enklaste jag har hittat att helt enkelt titta på anslutningssträngen för den aktuella länkade tabellen. För att göra det, lägg helt enkelt till följande rad direkt under raden "Set objTableDef = objDB.TableDefs(tableName)":

Debug.Print (objTableDef.Connect)

Det kommer att skriva ut den befintliga anslutningssträngen ut i felsöknings- / omedelbart fönster i kodredigeraren (om det inte redan är synligt, tryck CTRL-G inifrån VBA-kodredigeringsskärmen för att växla synlighet för Omedelbart fönster innan du kör koden.

En varning

Som alltid, glöm inte att medan kodavsnittet ovan kan hjälpa dig att spara tid när du behöver ändra filen en tabell är länkad till, men vad den inte kan göra är att hjälpa dig om du stöter på någon Åtkomst till filskador, så se till att du håller säkerhetskopior och vet vart du ska vända dig om allt annat misslyckas.

Författarintroduktion:

Mitchell Pond är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive reparera SQL-skador och Excel-programvara för återställningsprogramvara. För mer information besök www.datanumen.com

Kommentarer är stängda.