[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

Makrokod som stänger Excelböcker

save-changesI 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