Låt användaren bestämma vilken Excelfil som öppnas
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 kan anpassas 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.

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.
'deklarera variabler
Dim strFil_1 As String
Dim strFil_2 As String</pre>
'hämtar in vilken fil som skall öppnas
strFil_1 = Application.GetOpenFilename
On Error GoTo 99</pre>
'ö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).
Windows(strFil_1).Activate













RSS feed