Одновременная работа с несколькими книгами 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.