[easy_youtube_gallery id=uMK0prafzw0,8Uee_mcxvrw,HcXNPI-IPPM,JvMXVHVr72A,AIXUgtNC4Kc,K8nrF5aXPlQ,cegdR0GiJl4,L-wpS49KN00,KbW9JqM7vho ar=16_9 cols=3 thumbnail=hqdefault controls=0 playsinline=1 privacy=1 title=top wall=1 class=mySuperClass]
Först publicerad: 2009-05-18

VBA: Låt användaren öppna fil

Det är vanligt att man skriver makron som importerar data från andra filer, och kanske framför allt från olika typer av textfiler som t ex csv– och ascii-filer.

När man programmerar i Excel VBA så är det viktigt att man redan från början försöker anpassa koden så att den blir mer dynamisk, dvs. anpassningsbar till nya situationer. Ett exempel på detta är en funktion som låter användaren välja vilken fil som skall öppnas. På det sättet undviker man att de filer som importeras dag efter dag måste ha samma namn.

Körningen av makrot öppnar dialogrutan “Open file” där användaren på sedvanligt sätt väljer vilken fil på datorn/nätverket som skall öppnas.

openfile

Exempel som öppnar dialogrutan “Open File”

Nedanstående kod gör precis detta. Dessutom tilldelar vi den öppnade filen ett variabelnamn, vilket möjliggör att senare hoppa mellan flera öppnade filer liksom att kunna automatisera stängningen av vissa filer när importen är klar.

I detta exemplet öppnas filen utan kolumnuppdelning.

Sub OppnaFil()
 
'deklarera variabler
Dim strFil_1 As String
Dim strFil_2 As String
'hämtar in vilken fil som skall öppnas
strFil_1 = Application.GetOpenFilename
On Error GoTo 99
 
'öppnar filen
Workbooks.OpenText Filename:=strFil_1, _
Origin:=xlWindows, StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=False, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(1, 1)
 
'tilldelar den öppnade filen ett variabelnamn
strFil_1 = ActiveWindow.Caption
 
99:
End Sub

På det här enkla sättet kan vi öppna en eller flera filer som vi sedan låter makrot importera för vidare behandling.

On Error GoTo 99 betyder att makrot hoppar till 99: om ett fel uppstår. Och det fel det kan handla om är att användaren trycker på “Cancel” i dialogrutan för “Open File”. En snygg detalj som gör att användaren slipper ett mindre snyggt felmeddelande om att VBA-koden har kraschat.

Hoppa mellan flera öppna filer

Om du via makrot har öppnat flera filer så kan du enkelt hoppa mellan dem på följande sätt (under förutsättning att du har tilldelat dem variabelnamn, se exemplet ovan).

'för att hoppa mellan öppna filer
Windows(strFil_1).Activate