7 эффективных способов закрыть книгу Excel и открыть другую

Одновременная работа с несколькими книгами Excel — распространенный сценарий для многих специалистов. Однако эффективное управление этими книгами иногда может быть проблемой. В этой статье мы рассмотрим различные способы закрытия одной книги Excel и открытия другой, попутно предоставляя примеры кода. Независимо от того, являетесь ли вы новичком или опытным пользователем Excel, эти методы помогут оптимизировать рабочий процесс и повысить производительность.

Методы закрытия книги Excel и открытия другой:

Метод 1: использование объекта приложения Excel:

Sub CloseAndOpenWorkbook()
    Application.DisplayAlerts = False
    ThisWorkbook.Close
    Workbooks.Open "C:\Path\to\AnotherWorkbook.xlsx"
End Sub

Метод 2. Использование объекта «Рабочая книга»:

Sub CloseAndOpenWorkbook()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Application.DisplayAlerts = False
    wb.Close
    Workbooks.Open "C:\Path\to\AnotherWorkbook.xlsx"
End Sub

Метод 3. Использование метода ExecuteExcel4Macro:

Sub CloseAndOpenWorkbook()
    Application.ExecuteExcel4Macro "CLOSE(TRUE)"
    Workbooks.Open "C:\Path\to\AnotherWorkbook.xlsx"
End Sub

Метод 4. Использование метода SendKeys:

Sub CloseAndOpenWorkbook()
    Application.SendKeys "%FC"
    Workbooks.Open "C:\Path\to\AnotherWorkbook.xlsx"
End Sub

Метод 5. Использование функции оболочки:

Sub CloseAndOpenWorkbook()
    Application.DisplayAlerts = False
    ThisWorkbook.Close
    Shell "excel.exe ""C:\Path\to\AnotherWorkbook.xlsx"""
End Sub

Метод 6. Использование функций VBA API:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Sub CloseAndOpenWorkbook()
    Dim hwnd As Long
    Dim WM_CLOSE As Long: WM_CLOSE = &H10
    hwnd = FindWindow("XLMAIN", Application.Caption)
    PostMessage hwnd, WM_CLOSE, 0, 0
    Workbooks.Open "C:\Path\to\AnotherWorkbook.xlsx"
End Sub

Метод 7. Использование функции API VBA ShellExecute:

Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub CloseAndOpenWorkbook()
    Dim hwnd As LongPtr
    hwnd = Application.hwnd
    ShellExecute hwnd, "open", "C:\Path\to\Excel.exe", "C:\Path\to\AnotherWorkbook.xlsx", vbNullString, 1
    Application.Quit
End Sub

Эффективное управление несколькими книгами Excel имеет решающее значение для оптимизации производительности. В этой статье мы рассмотрели семь различных способов закрыть книгу Excel и открыть другую. Независимо от того, предпочитаете ли вы использовать код VBA, функции оболочки или встроенные методы Excel, эти методы обеспечивают гибкость и простоту использования. Включив эти методы в свой рабочий процесс, вы сможете сэкономить время и оптимизировать процессы Excel.