В этом руководстве вы узнаете, как использовать VBA для открытия и закрытия книги Excel несколькими способами.
VBA позволяет открывать или закрывать файлы стандартными методами. .Открытым а также .Закрывать.
Если вы хотите узнать, как проверить, существует ли файл, прежде чем пытаться открыть файл, вы можете щелкнуть по этой ссылке: VBA File Exists
Откройте книгу в VBA
Открыть книгу из пути
Если вы знаете, какой файл хотите открыть, вы можете указать его полный путь в функции. Вот код:
1 | Рабочие книги. Откройте "C: \ VBA Folder \ Sample file 1.xlsx" |
Эта строка кода открывает файл «Образец файла 1» из «Папки VBA».
Открыть книгу - ActiveWorkbook
Когда вы открываете книгу, она автоматически становится ActiveWorkbook. Вы можете ссылаться на недавно открытую книгу следующим образом:
1 | ActiveWorkbook.Save |
Когда вы ссылаетесь на лист или диапазон и опускаете имя книги, VBA предполагает, что вы имеете в виду ActiveWorkbook:
1 | Таблицы ("Sheet1"). Name = "Input" |
Откройте книгу и назначьте переменной
Вы также можете открыть книгу и назначить ее непосредственно объектной переменной. Эта процедура откроет книгу для wb переменную, а затем сохраните книгу.
123456 | Подложка OpenWorkbookToVariable ()Dim wb As WorkbookУстановите wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx")wb.SaveКонец подписки |
Назначение книг переменным при их открытии - лучший способ отслеживать ваши книги
Диалог открытия файла книги
Вы также можете вызвать диалоговое окно открытия файла книги. Это позволяет пользователю перейти к файлу и открыть его:
12345678 | Подложка OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Конец подписки |
Как вы можете видеть на изображении 1, при таком подходе пользователи могут выбирать, какой файл открыть. Диалоговое окно «Открыть файл» можно сильно настроить. Вы можете по умолчанию выбрать определенную папку, выбрать, какие типы файлов будут отображаться (например, только xlsx) и многое другое. Прочтите наше руководство по диалоговому окну «Открыть файл» для получения подробных примеров.
Открыть новую книгу
Эта строка кода откроет новую книгу:
1 | Рабочие тетради. Добавить |
Открыть новую книгу в переменной
Эта процедура откроет новую книгу, присвоив ее переменной wb:
1234 | Sub OpenNewWorkbook ()Dim wb As WorkbookУстановите wb = Workbooks.Add.Конец подписки |
Синтаксис открытой книги
Когда вы используете Workbooks.Open, вы можете заметить, что при открытии книги доступно множество опций:
Требуется имя файла. Все остальные аргументы необязательны - и вам, вероятно, не нужно знать большинство других аргументов. Вот два наиболее распространенных:
Открыть книгу только для чтения
Когда книга открыта только для чтения, вы не можете сохранить исходный файл. Это предотвращает редактирование файла пользователем.
1 | Книги. Откройте "C: \ VBA Folder \ Sample file 1.xlsx",, True |
Открыть книгу, защищенную паролем
Книга может быть защищена паролем. Используйте этот код, чтобы открыть книгу, защищенную паролем:
1 | Рабочие книги. Откройте "C: \ VBA Folder \ Sample file 1.xlsx",,, "пароль" |
Примечания к синтаксису Open Workbook
Обратите внимание, что на изображении выше мы включили круглую скобку «(», чтобы показать синтаксис. Если вы используете круглые скобки при работе с Workbooks.Open, вы должны назначить книгу переменной:
1234 | Sub OpenWB ()Dim wb As WorkbookУстановите wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx", True, True)Конец подписки |
Закройте книгу в VBA
Закрыть конкретную книгу
Как и при открытии книги, есть несколько способов закрыть файл. Если вы знаете, какой файл хотите закрыть, вы можете использовать следующий код:
1 | Workbooks.Close ("C: \ VBA Folder \ Sample file 1.xlsx") |
Эта строка кода закрывает файл «Образец файла 1», если он открыт. В противном случае он вернет ошибку, поэтому вам следует позаботиться об обработке ошибок.
Закрыть активную книгу
Если вы хотите закрыть рабочую книгу, которая в настоящее время активна, эта строка кода позволит вам сделать это:
1 | ActiveWorkbook.Close |
Закройте все открытые книги
Чтобы закрыть все открытые книги, вы можете просто использовать этот код:
1 | Рабочие тетрадиЗакрыть |
Закрыть первую открытую книгу
Это закроет первую открытую / созданную книгу:
1 | Рабочие тетради (1) .Закрыть |
Замените 1 на 2, чтобы закрыть вторую открытую / созданную книгу и так далее.
Закрыть без сохранения
Это закроет книгу без сохранения и без отображения запроса на сохранение:
1 | ActiveWorkbook.Close savechanges: = False |
Сохранить и закрыть без запроса
Точно так же это сохранит и закроет книгу без отображения запроса на сохранение:
1 | ActiveWorkbook.Close savechanges: = True |
Примечание: Есть несколько других способов указать, сохранять или не сохранять рабочую книгу, а также показывать подсказки или нет. Более подробно это обсуждается здесь.
Другие примеры открытых книг
Открыть несколько новых книг
Эта процедура откроет несколько новых книг, назначив новые книги массиву:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) Как рабочая тетрадьDim i как целое числоДля i = от 1 до 3Установите arrWb (i) = Workbooks.AddДалее яКонец подписки |
Открыть все книги Excel в папке
Эта процедура откроет все книги Excel в папке с помощью средства выбора диалогового окна «Открыть файл».
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb As WorkbookDim dlgFD как FileDialogDim strFolder как строкаDim strFileName As StringУстановите dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Если dlgFD.Show = -1 ТогдаstrFolder = dlgFD.SelectedItems (1) и Application.PathSeparatorstrFileName = Dir (strFolder & "* .xls *")Сделать пока strFileName ""Установите wb = Workbooks.Open (strFolder & strFileName)strFileName = DirПетляКонец, еслиКонец подписки |
Проверьте, открыта ли рабочая книга
Эта процедура проверяет, открыта ли книга:
1234567891011 | Sub TestByWorkbookName ()Dim wb As WorkbookДля каждого ББ в книгахЕсли wb.Name = "New Microsoft Excel Worksheet.xls", тоMsgBox "Нашел"Код вызова Exit Sub 'здесь, мы просто выйдем сейчасКонец, еслиСледующийКонец подписки |
Workbook_Open Событие
События VBA - это «триггеры», которые говорят VBA выполнить определенный код. Вы можете настроить события книги для открытия, закрытия, до сохранения, после сохранения и т. Д.
Прочтите наше руководство по событию Workbook_Open, чтобы узнать больше об автоматическом запуске макросов при открытии книги.