Přejít na hlavní obsah

Jak zavřít všechny soubory Exel pomocí VBA: jednoduchý průvodce

Pokud pracujete s programem Microsoft Excel a potýkáte se s problémem zavírání více otevřených souborů najednou, můžete pro automatizaci tohoto procesu použít VBA (Visual Basic for Applications). VBA je součástí Excelu a poskytuje možnost vytváření a provádění Maker pro automatizaci různých úkolů.

Ruční zavírání více souborů najednou může být poměrně časově náročný proces, zvláště pokud je otevřených mnoho. Ale pomocí VBA můžete tento úkol výrazně zjednodušit a ušetřit čas. Po napsání několika řádků kódu budete moci v jednu chvíli zavřít všechny otevřené soubory aplikace Excel.

Chcete-li začít, otevřete Editor VBA kliknutím na "Alt + F11" nebo výběrem "vývojář > Editor Visual Basic" v nabídce aplikace Excel. Uvnitř editoru VBA vytvořte nový modul kliknutím pravým tlačítkem myši na umístění vašich projektů a výběrem Vložit > Modul.

Po vytvoření nového modulu vložte následující kód:

Sub CloseAllWorkbooks()

'Tento kód zavře všechny otevřené soubory aplikace Excel'

Dim wb As Workbook

On Error Resume Next

For Each wb In Workbooks

If wb.ReadOnly = False Then

wb.Close SaveChanges:=False

End If

Next wb

End Sub

Jakmile je Kód zkopírován, uložte modul stisknutím "Ctrl + S". Nyní můžete spustit makro kliknutím na " F5 "nebo výběrem" vývojář > makro " v nabídce aplikace Excel. V důsledku toho budou všechny otevřené soubory aplikace Excel uzavřeny, s výjimkou souborů pouze pro čtení.

Jak zavřít všechny soubory Exel v VBA: kroky k provedení

Krok 1: Otevřete editor kódu VBA v Excelu stisknutím kombinace kláves Alt + F11.

Krok 2: Vytvořte nový modul kliknutím pravým tlačítkem myši na projekt VBA a výběrem položky Vložit z kontextové nabídky - > modul.

Krok 3: Vložte následující kód do modulu:

Dim wb As Workbook

For Each wb In Workbooks

'Zavřít všechny soubory kromě aktivního

If Not wb Is ActiveWorkbook Then

Krok 4: Stiskněte kombinaci kláves Ctrl + S Chcete-li uložit změny v projektu VBA.

Krok 5: Zavřete editor kódu VBA stisknutím kombinace kláves Alt + Q.

Krok 6: Vraťte se do hlavního okna Excelu a proveďte makro stisknutím klávesové zkratky Alt + F8. V seznamu maker vyhledejte " CloseAllWorkbooks "a klikněte na tlačítko"Spustit". Všechny soubory aplikace Excel kromě aktivního budou uzavřeny.

Poznámka: Před provedením makra uložte všechna potřebná data, protože soubory Excel budou bez uložení změn uzavřeny.

Vytvoření nového modulu VBA

Chcete-li psát makra v aplikaci VBA (Visual Basic for Applications) v aplikaci Excel, musíte vytvořit nový modul. To vám umožní navrhnout a spustit vlastní softwarový kód, který bude spuštěn v aplikaci Excel.

Kroky k vytvoření nového modulu VBA jsou následující:

  1. Otevřete sešit aplikace Excel, ve kterém chcete vytvořit nový modul.
  2. Přejděte na kartu Vývojář na hlavním panelu nástrojů aplikace Excel.
  3. Pokud se karta Vývojář nezobrazí v panelu nástrojů, povolte ji takto: Vyberte soubor = > Možnosti = > Možnosti aplikace Excel = > oblíbené = > zobrazit kartu vývojáře na pásu karet a klikněte na OK.
  4. Na kartě Vývojář vyhledejte skupinu kód a vyberte Vložit = > Modul.

Po dokončení těchto kroků budete mít nový modul VBA, který se otevře v editoru VBA. V tomto modulu lze psát svůj kód v jazyce VBA, který bude spuštěn při provádění Maker v Excelu.

Máte k dispozici všechny funkce a metody VBA pro práci s knihami, listy, buňkami a dalšími objekty aplikace Excel. VBA můžete použít k automatizaci procesů v Excelu, vytváření vlastních funkcí, zpracování dat a další.

Využití objektu Workbooks

Zde je několik příkladů použití zařízení Workbooks:

  • Otevření knihy: pomocí metody Open objekt workbooks, můžete otevřít knihu po její plné cestě.
  • Uložení knihy: pomocí metody Save nebo saveas objektu Workbook, můžete uložit knihu se změnami. Knihu můžete také uložit v různých formátech, například .xlsx nebo .csv.
  • Uzavření knihy: pomocí metody Close objekt Workbook, můžete zavřít knihu. Můžete si také vybrat, zda chcete změny uložit před zavřením nebo ne.
  • Přidání nové knihy: pomocí metody Add objektu Workbooks, můžete vytvořit novou knihu a přidat ji do sbírky Workbooks.
  • Přemíra knih: pomocí cyklu nebo pokynů For each, můžete procházet všechny knihy ve sbírce Workbooks a provádět určité operace s každým z nich.

Použití objektu Workbooks vám umožňuje ovládat všechny otevřené knihy v exelu a provádět s nimi potřebné operace. To je zvláště užitečné, když pracujete s mnoha knihami nebo chcete automatizovat určité akce.

Cyklus pro přerušení všech otevřených souborů

Chcete-li zavřít všechny otevřené soubory v programu Excel pomocí VBA, musíme procházet všechny aktivní pracovní sešity a zavřít je střídavě. To lze provést pomocí cyklu, který projde každým otevřeným souborem.

Zde je příklad kódu, který ukazuje použití cyklu k přerušení všech aktivních pracovních knih:

Sub CloseAllWorkbooks () Dim WB As Workbook ' procházíme každou aktivní pracovní knihou For each wb In Application.Workbooks ' zavřeme pracovní sešit bez uložení změn wb.Close SaveChanges:=False Next wb End Sub

Tento kód používá návrh cyklu "For each", který umožňuje procházet sbírku objektů (v tomto případě aktivní pracovní knihy). V rámci cyklu dochází k uzavření každé knihy bez uložení změn.

V případě potřeby můžete do kódu přidat kontrolu, abyste změny uložili před uzavřením pracovního sešitu:

Sub CloseAllWorkbooks () Dim WB As Workbook ' procházíme každou aktivní pracovní knihou For each wb In Application.Workbooks ' zkontrolujte, zda byly provedeny změny v pracovní knize If wb.Saved = False Then ' pokud změny nebyly uloženy, ptáme se uživatele, zda uložit nebo ne result = MsgBox ("chcete uložit změny v" & wb.Name & "?", vbQuestion + vbYesNoCancel, " Uložit změny?") 'V závislosti na výsledku vlastního výběru Select Case result Case vbYes' uložíme změny a zavřeme pracovní sešit wb.Close SaveChanges:=True Case vbNo ' zavřeme pracovní sešit bez uložení změn wb.Close SaveChanges: = False Case vbcancel 'Zrušme uzavření pracovní knihy Exit Sub end select Else 'zavřeme pracovní sešit bez uložení změn wb.Close SaveChanges:=False End If Next wb End Sub

Nyní můžete tento cyklus použít k uzavření všech otevřených souborů v Excelu pomocí VBA. Jednoduše vyvolejte postup CloseAllWorkbooks ve svém kódu a všechny otevřené knihy budou odpovídajícím způsobem uzavřeny.

Zkontrolujte, zda je soubor aktuálně otevřený

K tomu je třeba použít funkci On Error Resume Next. Umožňuje pokračovat v provádění kódu ignorováním chyb. Poté se pokusí otevřít soubor v režimu pouze pro čtení pomocí metody Workbooks.Open. Pokud je soubor otevřený, vygeneruje se chyba, kterou lze v bloku zpracovat On Error.

Sub CheckFileIsOpen()Dim wb As WorkbookDim filePath As String' Путь к файлуfilePath = "C:\Путь\к\файлу.xlsx"' Попытка открыть файл в режиме только для чтенияOn Error Resume NextSet wb = Workbooks.Open(filePath, ReadOnly:=True)' Проверка, удалось ли открыть файлIf Not wb Is Nothing Then' Файл открытMsgBox "Файл открыт"wb.CloseElse' Файл не открытMsgBox "Файл не открыт"End IfOn Error GoTo 0End Sub

V tomto příkladu kódu je proměnná filePath obsahuje cestu k souboru, kterou je třeba zkontrolovat. Po použití funkce Workbooks.Open proměnná wb pokud byl úspěšně otevřen, bude odkazovat na otevřený soubor. Poté dojde k ověření, jak úspěšně byl pokus o otevření souboru proveden, a příslušná zpráva se uživateli zobrazí pomocí funkce MsgBox. Pokud je soubor otevřený, bude uzavřen pomocí metody wb.Close