DATORNTILLBEHÖR

Hur man skapar en VBA-procedur som stänger alla öppna arbetsböcker i Excel

Denna enkla procedur kan spara mycket tid när du är klar med ditt arbete. Susan Harkins berättar hur.

Bild: iStockphoto

Vissa av oss arbetar med flera Microsoft Excel-arbetsböcker öppna samtidigt. Antingen öppnar vi dem och jobbar ett tag och går vidare till nästa, eller så har de en länk eller koppling som kräver att de alla är öppna samtidigt. Oavsett hur du slutar med många öppna arbetsböcker, kan det vara tråkigt att stänga dem alla manuellt, en efter en.

Måste läsa Windows-täckning

Den goda nyheten är att du kan använda en VBA-procedur för att stänga av alla istället. I den här artikeln kommer jag att visa dig en enkel procedur som sparar varje arbetsbok, om det behövs, innan du stänger den och sedan går vidare till nästa arbetsbok, och så småningom sparar och stänger alla.

SE: 83 Excel-tips varje användare bör behärska (TechRepublic)

Jag använder Microsoft 365 på ett Windows 10 64-bitarssystem. (Jag rekommenderar att du väntar med att uppgradera till Windows 11 tills alla kinks har lösts.) Du kan ladda ner .bas-filen, som innehåller proceduren, och importera filen till din Personal.xlsb-arbetsbok. Excel Online stöder inte VBA.

Var proceduren går

Det första att komma ur vägen är detta: Du kan inte lagra denna procedur i vilken arbetsbok som helst. Om det är den senast öppnade arbetsboken kommer proceduren att stänga den först och stoppa. Detta är den typ av procedur som hör hemma i din personliga arbetsbok. Den här arbetsboken, som heter Personal.xlsb, öppnas varje gång du öppnar Excel och är dold som standard. Alla procedurer i Personal.xlsb är tillgängliga för alla öppna arbetsböcker. Det är ett slags bibliotek.

Öppna Visual Basic Editor (VBE) genom att trycka på Alt + F11. Om projektfönstret till vänster inte är synligt, tryck på Ctrl + R eller välj Projektutforskaren från menyn Visa. Om Personal.xlsb finns i Project Explorer, expandera den och dubbelklicka på Module1 för att öppna dess kodfönster.

Om Personal.xlsb inte finns i projektfönstret måste du spela in en kort procedur enligt följande:

    1. Gå tillbaka till kalkylbladet och klicka på fliken Utvecklare.
    2. Klicka på Spela in makro i gruppen Makron.
    3. I den resulterande dialogrutan behöver du bara välja var proceduren ska lagras. Från rullgardinsmenyn Store makro i, välj Personal Macro Workbook (Bild A).
    4. Klicka på OK
    5. Klicka på Stoppa inspelning i gruppen Makron på fliken Utvecklare.

    Gå tillbaka till VBE och du hittar Personal.xlsb i projektfönstret, som visas i Bild B. Dubbelklicka på Module1 för att öppna dess kodblad och ta bort proceduren du just skapade. Du behöver inte denna procedur; dess enda syfte var att visa Personal.xlsb.

    Bild A

    Välj var proceduren ska lagras.Välj var proceduren ska lagras.

    Bild B

    Nu är Personal.xlsb tillgängligt.Nu är Personal.xlsb tillgängligt.

    Med ett öppet kodblad för Personal.xlsb är du redo att lägga till koden som visas i Lista A. Det är verkligen så enkelt som det ser ut (Bild C). Om du använder en bandversion, se till att spara arbetsboken som en makroaktiverad fil. Om du arbetar i menyversionen kan du hoppa över det här steget.

    Lista A

    Sub CloseWorkbooks()

    ‘Spara och stäng alla öppna arbetsböcker.

    Dim wb som arbetsbok

    “Stänger av skärmen.

    Application.ScreenUpdating = Falskt

    “Bläddrar igenom öppna arbetsböcker och stänger dem.

    För varje wb i arbetsböcker

    Debug.Print wb.Name

    Om wb.Name <> “PERSONAL.XLSB” Då

    wb.Close SaveChanges:=True

    Avsluta If

    Nästa wb

    “Tänder på skärmen.

    Application.ScreenUpdating = Sant

    “Stänger Excel.

    Application. Quit

    Avsluta Sub

    Bild C

    Ange CloseWorkbooks() i Personal.xlsb' Modul 1 kodblad.Ange CloseWorkbooks() i Personal.xlsb’ Modul 1 kodblad.

    Proceduren finns i de nedladdningsbara .bas-filerna, som du kan importera till Personal.xlsb-filens modul 1. Om du anger koden manuellt, klistra inte in från den här webbsidan. Kopiera istället koden till en textredigerare och klistra sedan in koden i Personal.xlsb-modulen. Om du gör det tar du bort alla fantomwebbtecken som annars kan orsaka fel.

    När du har proceduren i Personal.xlsb kan du köra den från vilken arbetsbok som helst.

    Om proceduren

    Denna procedur deklarerar först en Workbook-objektvariabel som wb och stänger av skärmuppdatering så att du faktiskt inte ser filer som stängs. For Every-satsen cyklar igenom alla öppna arbetsboksobjekt och stänger dem, med värdet =True för att spara varje arbetsbok innan stängs, om inte den aktuella arbetsboken är Personal.xlsb. I så fall hoppar VBA över detta steg och fortsätter med nästa arbetsbok. Koden måste hoppa över Personal.xlsb-arbetsboken eftersom om den stängs slutar den också att köras, kanske lämnar arbetsböckerna öppna. När alla arbetsböcker är stängda stänger programmet Application.Quit Excel. Om du vill lämna Excel öppet kan du kommentera detta uttalande.

    Om Excel är öppet, stäng det. Öppna några Excel-arbetsböcker och från några öppna arbetsboken, klicka på fliken Utvecklare och klicka sedan på Makron i gruppen Makron. I den resulterande dialogrutan, visas i Bild D, välj proceduren CloseWorkbooks och klicka på Kör. Proceduren sparar och stänger varje öppen arbetsbok och avslutar sedan Excel.

    Bild D

    Välj proceduren CloseWorkbooks() för att stänga alla öppna arbetsböcker.Välj proceduren CloseWorkbooks() för att stänga alla öppna arbetsböcker.

    Troligtvis kommer du inte att vilja arbeta igenom alla dessa steg för att köra detta makro. Jag rekommenderar att du lägger till den i Quick Access Toolbar (QAT) eller en anpassad grupp. Om du behöver hjälp med det, läs Hur man lägger till Office-makron i QAT-verktygsfältet för snabb åtkomst.

Botón volver arriba

Ad blocker detected

You must remove the AD BLOCKER to continue using our website THANK YOU