Makrokod som stänger Excelböcker
I det här exemplet kommer jag att visa hur du kan skriva VBA-kod som stänger ned en viss fil. Det kan handla om en Excelbok såväl som vilken annan typ av fil som helst.
Rutinen är användbar i lägen då du via kod har öppnat en fil som du vill importera data från.
Så fort importen är slutförd så vill du stänga ned filen. Vi kommer att använda oss av metoden ActiveWindow.Close.
Stänga ned en fil med känd sökväg
Följande kod stänger ned en viss Excelbok som är öppen och som vi dessutom vet sökvägen till. Stängningen sker utan att spara ändringar.
Sub StangaFil() Application.DisplayAlerts = False Windows("MinExcelFil.xls").Activate ActiveWindow.Close SaveChanges:=False Application.DisplayAlerts = True End Sub |
Som du kan se så har vi angivit att ändringar inte skall sparas. Dessutom gör vi en temporär ändring av Excelprogrammets egenskap DisplayAlerts. I och med att vi stänger av den funktionen så kommer Excel inte att visa några varningsrutor. Detta skulle annars störa makrokörningen. Kom emellertid ihåg att sätta på funktionen igen så fort som möjligt.
Stänga ned en fil som vi tidigare givit ett variabelnamn
För att från scratch bygga in mer flexibilitet i dina program så bör du tilldela variabelnamn till de filer som du öppnar från dina makron. Med följande justering av koden som vi precis tittat på ovan så får vi:
Sub StangaFil() Application.DisplayAlerts = False Windows(strFil_1).Activate ActiveWindow.Close SaveChanges:=False Application.DisplayAlerts = True End Sub |
Komplett exempel på öppning och stängning av en textfil
Följande kod låter användaren bestämma vilken fil som skall öppnas, filen öppnas för att sedan stängas igen, utan att några ändringar sparas.
Sub OppnaOchStangaTextFil() 'deklarera variabler Dim strFil_1 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 '-------------------------------------------------------- 'här kan vi göra saker med filen som vi precis har öppnat '-------------------------------------------------------- 'stänger ned filen Application.DisplayAlerts = False Windows(strFil_1).Activate ActiveWindow.Close SaveChanges:=False Application.DisplayAlerts = True 99: End Sub |