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í:
- Otevřete sešit aplikace Excel, ve kterém chcete vytvořit nový modul.
- Přejděte na kartu Vývojář na hlavním panelu nástrojů aplikace Excel.
- 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.
- 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