Метод open vba excel
Метод Workbook. Open (Excel)
Excel поддерживает возможность открытия URL-адреса в качестве другой книги Excel с помощью Workbooks.Open method :
Dim objBK As Workbook
Dim objRng As Range
'Open the page as a workbook.
'Find the Canadian Dollar cell.
Set objRng = objBK.Worksheets(1).Cells.Find("Canadian Dollar")
'Retrieve the exchange rate.
MsgBox "The CAD/USD exchange rate is " & objRng.Offset(-6, -1).Value
М етод Workbook. Open (Excel)
Expression . Open (открыть ) ( Filename , UpdateLinks , ReadOnly , Format , Password , вритереспассворд , игноререадонлирекоммендед , Origin ,- Limit , редактируемый , _Notify _, Converter , аддтомру , Local , корруптлоад )
Expression (выражение ) Переменная, представляющая объект книги .
Обязательный или необязательный
Строка . Имя файла книги, которую необходимо открыть.
Задает способ обновления внешних ссылок (ссылок) в файле (например, ссылки на диапазон в книге бюджет. xls в следующей формуле =SUM([Budget.xls]Annual!C10:C25) ). Если этот аргумент не указан, пользователю предлагается указать, как будут обновляться ссылки. Для получения дополнительных сведений о значениях, используемых этим параметром, обратитесь к разделу "Примечания".
Если Microsoft Excel открывает файл в формате WKS, WK1 или WK3, а аргумент UpdateLinks имеет значение 0, диаграммы не создаются; в противном случае Microsoft Excel создает диаграммы на основе диаграмм, вложенных в файл.
Значение true, чтобы открыть книгу в режиме только для чтения.
Если Microsoft Excel открывает текстовый файл, этот аргумент задает символ разделителя. Если этот аргумент не указан, используется текущий разделитель. Для получения дополнительных сведений о значениях, используемых этим параметром, обратитесь к разделу "Примечания".
Строка, содержащая пароль, необходимый для открытия защищенной книги. Если этот аргумент опущен и для книги требуется пароль, пользователю предлагается ввести пароль.
Строка, содержащая пароль, необходимый для записи в книгу, зарезервированную для записи. Если этот аргумент опущен и для книги требуется пароль, пользователю будет выдан запрос на ввод пароля.
Если файл является текстовым, этот аргумент указывает на то, где он был создан, чтобы страницы кода и возврат каретки/перевод строки (CR/LF) могли быть сопоставлены правильно. Может быть одной из следующих констант кслплатформ : кслмаЦинтош , кслвиндовс или кслмсдос . Если этот аргумент не указан, используется текущая операционная система.
Если файл является текстовым файлом, а аргумент Format имеет значение 6, этот аргумент представляет собой строку, задающую символ, который будет использоваться в качестве разделителя. Например, используйте Chr (9) для табуляции, используйте "," для запятых, введите ";" для точки с запятой или используйте специальный символ. Используется только первый символ строки.
Если файл является надстройкой Microsoft Excel 4,0, этот аргумент имеет значение true , чтобы открыть надстройку, чтобы она стала видимым окном. Если этот аргумент имеет значение false или опущен, надстройка открывается как скрытая и не может быть скрыта. Этот параметр не применяется к надстройкам, созданным в Microsoft Excel 5,0 или более поздней версии.
Если файл является шаблоном Excel, имеет значение true , чтобы открыть указанный шаблон для редактирования. Значение false , чтобы открыть новую книгу на основе указанного шаблона. Значение по умолчанию — False .
Если файл не может быть открыт в режиме чтения и записи, этот аргумент имеет значение true , чтобы добавить файл в список уведомлений о файле. Microsoft Excel откроет файл как доступный только для чтения, опросить список уведомлений о файле, а затем уведомить пользователя, когда файл станет доступен. Если этот аргумент имеет значение false или опущено, уведомления не запрашиваются, а все попытки открыть недоступный файл завершатся ошибкой.
Индекс первого конвертера файлов, который будет пытаться открыть файл. Заданный конвертер файлов сначала пытается выполнить операцию. Если этот конвертер не распознает файл, попытаются выполнить все другие конвертеры. Индекс преобразователя состоит из номеров строк преобразователей, возвращаемых свойством FileConverters .
Значение true , чтобы добавить эту книгу в список недавно использовавшихся файлов. Значение по умолчанию — False .
True — сохраняет файлы на языке Microsoft Excel (включая параметры панели управления). False (ложь ) (по умолчанию) — сохранение файлов на языке Visual Basic для приложений (VBA) (как правило, это английская версия, если проект VBA, в котором запущены книги, не является устаревшим международным проектом XL5/95 VBA).
Может быть одной из следующих констант: кслнормаллоад , кслрепаирфиле и кслекстрактдата . Поведение по умолчанию, если значение параметра не указано, не равно кслнормаллоад и не выполняет восстановление при запуске с помощью объектной модели.
В озвращаемое значение
Объект книги , представляющий открытую книгу.
По умолчанию при открытии файлов программным способом включаются макросы. Используйте свойство аутоматионсекурити , чтобы задать режим безопасности макросов, используемый при программном открытии файлов.
В параметре UpdateLinks можно указать одно из следующих значений, чтобы определить, обновляются ли внешние ссылки (ссылки) при открытии книги.
Внешние ссылки (ссылки) не будут обновляться при открытии книги.
Внешние ссылки (ссылки) будут обновляться при открытии книги.
Чтобы определить символ разделителя для файла, можно указать одно из следующих значений в параметре Format .
Синтаксис оператора Open состоит из следующих частей:
Part | Описание |
---|---|
путь | Обязательный. Строковое выражение, указывающее имя файла; может включать каталог или папку, а также диск. |
<режим> | Обязательный. Ключевое слово, задающее режим файла: Добавление, Двоичный, Ввод, Вывод или Прямой. Если элемент не задан, файл открывается для доступа в режиме Прямой. |
доступ | Необязательное. Ключевое слово, определяющее операции, разрешенные для открытого файла: Чтение, Запись или Чтение и запись. |
блокировка | Необязательное. Ключевое слово, определяющее операции, запрещенные для открытого файла другими процессами: Общий, Блокировка чтения, Блокировка записи и Блокировка чтения и записи. |
filenumber | Обязательно указывать. Допустимый номер файла в диапазоне от 1 до 511 включительно. Чтобы получить следующий доступный номер файла, используйте функцию FreeFile. |
reclength | Необязательное. Число меньше или равное 32767 (байт). Для файлов, открытых для прямого доступа это значение равно значению длины записи. Для файлов с последовательным доступом значение представляет собой число буферизуемых символов. |
Примечания
Перед тем как выполнять операции ввода-вывода для файла, его необходимо открыть. Оператор Open выделяет для файла буфер для операций ввода-вывода и определяет режим доступа, который будет использоваться для буфера.
Если файл, заданный элементом pathname, не существует, он будет создан при открытии файла в режиме Добавление, Двоичный, Вывод или Прямой.
Если файл уже открыт другим процессом и указанный тип доступа не разрешен, операция Open сбой и возникает ошибка.
Предложение Len игнорируется, если выбран режимДвоичный.
В двоичном, входном и случайном режимах можно открыть файл с помощью другого номера файла без первого закрытия файла. В режимах Добавление и Вывод необходимо сначала закрыть файл, перед тем как открыть его с другим номером.
Пример
В этом примере показаны различные способы использования оператора Open для включения операций ввода и вывода для файла.
Следующий код открывает файл в режиме последовательного ввода.
В этом примере показано открытие файла в режиме "Двоичный" только для операций записи.
В следующем примере показано открытие файла в режиме "Прямой". Файл содержит записи определенного пользователем типа.
В этом примере кода открывается файл для последовательного вывода; любой процесс может читать или писать в файл.
Этот пример кода открывает файл в двоичном режиме для чтения; другие процессы не могут читать файл.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
выражения. Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)
выражение Переменная, представляюная объект Книги.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
FileName | Необязательный | Variant | String. Имя файла книги, которая должна быть открыта. |
UpdateLinks | Необязательный | Variant | Указывает, как обновляются внешние ссылки (ссылки) в файле, например ссылка на диапазон Budget.xls книги в следующей =SUM([Budget.xls]Annual!C10:C25) формуле. Если этот аргумент не указан, пользователю будет предложено указать, как будут обновляться ссылки. Дополнительные сведения о значениях, используемых этим параметром, см. в разделе Примечание. |
Возвращаемое значение
Объект Книги, представляю который представляет открытую книгу.
Примечания
По умолчанию макрос включен при открытии файлов программным путем. Используйте свойство AutomationSecurity, чтобы настроить режим макрос безопасности, используемый при открытии файлов программным способом.
Вы можете указать одно из следующих значений в параметре UpdateLinks, чтобы определить, обновляются ли внешние ссылки (ссылки) после открытия книги.
Значение | Описание |
---|---|
0 | Внешние ссылки (ссылки) не обновляются после открытия книги. |
3 | Внешние ссылки (ссылки) будут обновляться после открытия книги. |
Можно указать одно из следующих значений в параметре Format, чтобы определить характер делимитера для файла.
Значение | Delimiter |
---|---|
1 | Вкладки |
2 | Запятые |
3 | Пробелы |
4 | Semicolons |
5 | Отсутствует |
6 | Настраиваемый символ (см. аргумент Delimiter) |
Пример
В следующем примере кода откроется книга Analysis.xls, а затем выполняется Auto_Open макрос.
В следующем примере кода лист из другой книги импортируется на новый лист в текущей книге. Sheet1 в текущей книге должен содержать имя пути для импорта книги в ячейке D3, имя файла в ячейке D4 и имя листа в ячейке D5. Импортируемый лист вставляется после sheet1 в текущей книге.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Существующая книга открывается из кода VBA Excel с помощью метода Open:
В кавычках указывается полный путь к открываемому файлу Excel. Если такой файл не существует, произойдет ошибка.
Проверить существование файла можно с помощью функции Dir:
Или, если файл существует, можно сразу его открыть:
Создание новой книги
Новая рабочая книга Excel создается в VBA с помощью метода Add:
Созданную книгу, если она не будет использоваться как временная, лучше сразу сохранить:
В кавычках указывается полный путь сохраняемого файла Excel, включая присваиваемое имя, в примере — это «test2.xls».
Обращение к открытой книге
Обращение к активной книге:
Обращение к книге с выполняемым кодом:
Обращение к книге по имени:
Обратиться по имени можно только к уже открытой книге, а чтобы из кода VBA Excel книгу открыть, необходимо указать полный путь к файлу.
Как закрыть книгу Excel из кода VBA
Открытая рабочая книга закрывается из кода VBA Excel с помощью метода Close:
Если закрываемая книга редактировалась, а внесенные изменения не были сохранены, тогда при ее закрытии Excel отобразит диалоговое окно с вопросом: Вы хотите сохранить изменения в файле test1.xlsx? Чтобы файл был закрыт без сохранения изменений и вывода диалогового окна, можно воспользоваться параметром метода Close — SaveChanges:
Закрыть книгу Excel из кода VBA с сохранением внесенных изменений можно также с помощью параметра SaveChanges:
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.30 комментариев для “VBA Excel. Рабочая книга (открыть, создать новую, закрыть)”
Если речь идет об обновлении связей между книгами, то попробуйте так:
Здравствуйте, Вячеслав!
Для выбора книги в определённой папке используйте Стандартный диалог выбора файлов Application.GetOpenFilename.
закрывает саму книгу, но при этом сама прога остаётся висеть со своим интерфейсом. Можно нажать Ctlr+O и открыть какой-нибудь xls-файл.
При этом на компе могут быть открыты другие файлы, поэтому команда
не допустима.
Что делать?
Сергей, используйте глобальные переменные, если файл Excel открывается и закрывается разными процедурами (переменные позволят закрыть тот самый файл и тот самый экземпляр приложения, в котором открыт файл):
Set myWorkbook = myExcel . Workbooks . Open ( "C:\Users\. xlsx" )А как открывать книгу, если имя файла совпадает с названием из массива.
То есть есть массив переменных которые записаны в столбец начиная с столбца А строки 2. Названия всегда разные.но совпадают с названием файла. Можно ли поочередно открыть их для редактирования через VBA
Привет, YAN!
Используйте следующий код для открытия по очереди файлов Excel, имена которых записаны в первый столбец со второй ячейки:
Объявление глобальной переменной n размещено в разделе Declarations программного модуля. Число 15 соответствует номеру строки последней ячейки диапазона с именами рабочих книг.
имеется 2 книги (обе открытые)
Используя ссылку (без ручного ввода) надо обратиться Книга 2, скопировать 5 строк ниже ссылки (строка6:строка10) и вставить в рабочую книгу(Книга 1)
Этот код VBA копирует пять строк под указанной ячейкой из открытой книги Excel по адресу из ячейки D4 Листа1 текущей книги и вставляет их в текущую книгу в пять строк под ячейкой D4 Листа1:
Эта статья содержит полное руководство по использованию рабочей книги VBA.
Если вы хотите использовать VBA для открытия рабочей книги, тогда откройте «Открыть рабочую книгу»
Если вы хотите использовать VBA для создания новой рабочей книги, перейдите к разделу «Создание новой рабочей книги».
Для всех других задач VBA Workbook, ознакомьтесь с кратким руководством ниже.
Краткое руководство по книге VBA
В следующей таблице приведено краткое руководство по основным задачам книги VBA.
Начало работы с книгой VBA
Мы можем получить доступ к любой открытой книге, используя код Workbooks («Пример.xlsm»). Просто замените Пример.xlsm именем книги, которую вы хотите использовать.
В следующем примере показано, как записать в ячейку на листе. Вы заметите, что мы должны были указать рабочую книгу, рабочий лист и диапазон ячеек.
Этот пример может показаться немного запутанным для новичка, но на самом деле он довольно прост.
Это простой шаблон. Вы можете написать в любую ячейку любого листа из любой книги. Это просто вопрос изменения названия книги, имени листа и диапазона в соответствии с вашими потребностями.
Взгляните на часть книги
Ключевое слово Workbooks относится к совокупности всех открытых рабочих книг. Предоставление имени книги в коллекцию дает нам доступ к этой книге. Когда у нас есть объект, мы можем использовать его для выполнения задач с книгой.
Устранение неполадок в коллекции книг
Run-time Error 9: Subscript out of Range.
Это означает, что VBA не может найти книгу, которую вы передали в качестве параметра.
Это может произойти по следующим причинам:
- Рабочая книга в настоящее время закрыта.
- Вы написали имя неправильно.
- Вы создали новую рабочую книгу (например, «Книга1») и попытались получить к ней доступ, используя Workbooks («Книга1.xlsx»). Это имя не Книга1.xlsx, пока оно не будет сохранено в первый раз.
- (Только для Excel 2007/2010) Если вы используете два экземпляра Excel, то Workbooks () относится только к рабочим книгам, открытым в текущем экземпляре Excel.
- Вы передали число в качестве индекса, и оно больше, чем количество открытых книг, например Вы использовали
Workbooks (3), и только две рабочие книги открыты.
Если вы не можете устранить ошибку, воспользуйтесь любой из функций в разделе Поиск всех открытых рабочих книг. Они будут печатать имена всех открытых рабочих книг в «Immediate Window » (Ctrl + G).
Примеры использования рабочей книги VBA
Следующие примеры показывают, что вы можете сделать с книгой.
Примечание. Чтобы попробовать этот пример, создайте две открытые книги с именами Тест1.xlsx и Тест2.xlsx.
Примечание: в примерах кода я часто использую Debug.Print. Эта функция печатает значения в Immediate Window. Для просмотра этого окна выберите View-> Immediate Window из меню (сочетание клавиш Ctrl + G)
Доступ к рабочей книге VBA по индексу
Вы также можете использовать индексный номер с книгами (). Индекс относится к порядку, в котором книга была открыта или создана.
Workbooks (1) относится к книге, которая была открыта первой. Workbooks (2) относится к рабочей книге, которая была открыта второй и так далее.
В этом примере мы использовали Workbooks.Count. Это количество рабочих книг, которые в настоящее время находятся в коллекции рабочих книг. То есть количество рабочих книг, открытых на данный момент. Таким образом, использование его в качестве индекса дает нам последнюю книгу, которая была открыта
Использование индекса не очень полезно, если вам не нужно знать порядок. По этой причине вам следует избегать его использования. Вместо этого вы должны использовать имя рабочей книги вместе с Workbooks ().
Поиск всех открытых рабочих книг
Иногда вы можете получить доступ ко всем рабочим книгам, которые открыты. Другими словами, все элементы в коллекции Workbooks ().
Вы можете сделать это, используя цикл For Each.
Вы также можете использовать стандартный цикл For для доступа ко всем открытым рабочим книгам.
Для доступа к книгам подходит любой из этих циклов. Стандартный цикл For полезен, если вы хотите использовать другой порядок или вам нужно использовать счетчик.
Примечание. Оба примера читаются в порядке с первого открытого до последнего открытого. Если вы хотите читать в обратном порядке (с последнего на первое), вы можете сделать это
Открыть рабочую книгу
Следующий код VBA открывает книгу «Книга1.xlsm» в папке «C: \ Документы»
Рекомендуется проверить, действительно ли существует книга, прежде чем открывать ее. Это предотвратит ваши ошибки. Функция Dir позволяет вам легко это сделать.
Проверить открыта ли книга
Если вы открываете книгу только для чтения, то не имеет значения, открыта ли она уже. Тем не менее, если вы собираетесь обновить данные в рабочей книге, рекомендуется проверить, открыты ли они.
Приведенную ниже функцию можно использовать для проверки, открыта ли книга в данный момент. Если нет, то откроется рабочая книга. В любом случае вы получите открытую рабочую книгу.
Вы можете использовать эту функцию так:
Этот код хорош в большинстве ситуаций. Однако, если рабочая книга может быть открыта в режиме только для чтения или может быть открыта в данный момент другим пользователем, возможно, вы захотите использовать немного другой подход.
Пример использования этой функции показан ниже. В этом случае, если рабочая книга уже открыта, вы сообщаете пользователю, что она должна быть закрыта для продолжения макроса.
Если вам нужно проверить, открыта ли книга в другом экземпляре Excel, вы можете использовать атрибут ReadOnly книги. Будет установлено значение true, если оно открыто в другом экземпляре.
Закрыть книгу
Закрыть книгу в Excel VBA очень просто. Вы просто вызываете метод Close рабочей книги.
Очевидно, что вы не можете сохранить изменения в книге, которая в данный момент открыта только для чтения.
Сохранить книгу
Мы только что видели, что вы можете сохранить книгу, когда закроете ее. Если вы хотите сохранить его на любом другом этапе, вы можете просто использовать метод Save.
Вы также можете использовать метод SaveAs
Метод WorkAs SaveAs поставляется с двенадцатью параметрами, которые позволяют вам добавить пароль, установить файл только для чтения и так далее. Вы можете увидеть детали здесь.
Вы также можете использовать VBA для сохранения книги в виде копии с помощью SaveCopyAs.
Копировать книгу
Если рабочая книга открыта, вы можете использовать два метода в приведенном выше разделе для создания копии, т.е. SaveAs и SaveCopyAs.
Если вы хотите скопировать книгу, не открывая ее, вы можете использовать FileCopy, как показано в следующем примере:
Использование диалогового окна «Файл» для открытия рабочей книги
В предыдущем разделе показано, как открыть книгу с заданным именем. Иногда вам может понадобиться, чтобы пользователь выбрал рабочую книгу. Вы можете легко использовать Windows File Dialog.
FileDialog настраивается, и вы можете использовать его так:
Если вы просто хотите, чтобы пользователь выбрал файл, вы можете использовать функцию GetOpenFilename.
Когда вы вызываете эту функцию, вы должны проверить, отменяет ли пользователь диалог.
В следующем примере показано, как легко вызвать функцию UserSelectWorkbook и обработать случай отмены пользователя.
Вы можете настроить диалог, изменив Title, Filters и AllowMultiSelect в функции UserSelectWorkbook.
Использование ThisWorkbook
Существует более простой способ доступа к текущей книге, чем использование Workbooks() . Вы можете использовать ключевое слово ThisWorkbook. Это относится к текущей книге, то есть к книге, содержащей код VBA.
Если наш код находится в книге, называемой МойVBA.xlsm, то ThisWorkbook и Workbooks («МойVBA.xlsm») ссылаются на одну и ту же книгу.
Использование ThisWorkbook более полезно, чем использование Workbooks (). С ThisWorkbook нам не нужно беспокоиться об имени файла. Это дает нам два преимущества:
- Изменение имени файла не повлияет на код
- Копирование кода в другую рабочую книгу не требует изменения кода
Это может показаться очень маленьким преимуществом. Реальность такова, что имена будут меняться все время. Использование ThisWorkbook означает, что ваш код будет работать нормально.
В следующем примере показаны две строки кода. Один с помощью ThisWorkbook, другой с помощью Workbooks (). Тот, который использует Workbooks, больше не будет работать, если имя МойVBA.xlsm изменится.
Использование ActiveWorkbook
ActiveWorkbook относится к книге, которая в данный момент активна. Это тот, который пользователь последний раз щелкнул.
Поначалу это может показаться полезным. Проблема в том, что любая рабочая книга может стать активной простым щелчком мыши. Это означает, что вы можете легко записать данные не в ту книгу.
Использование ActiveWorkbook также затрудняет чтение кода. Из кода может быть не очевидно, какая книга должна быть активной.
Надеюсь, я дал понять, что вам следует избегать использования ActiveWorkbook, если в этом нет необходимости. Если вы должны быть очень осторожны.
Примеры доступа к книге
Мы рассмотрели все способы доступа к книге. Следующий код показывает примеры этих способов.
Объявление переменной VBA Workbook
Причина объявления переменной книги состоит в том, чтобы сделать ваш код более легким для чтения и понимания. Проще увидеть преимущество на примере:
Вы можете установить переменную книги с помощью любого из методов доступа, которые мы видели.
Ниже показан тот же код без переменной рабочей книги.
В этих примерах разница несущественная. Однако, когда у вас много кода, использование переменной полезно, в частности, для рабочего листа и диапазонов, где имена имеют тенденцию быть длинными, например thisWorkbook.Worksheets («Лист1»). Range («A1»).
Вы можете назвать переменную книги как wrkRead или wrkWrite. Затем вы можете сразу увидеть, для чего используется эта книга.
Создать новую книгу
Для создания новой рабочей книги вы используете функцию добавления рабочих книг. Эта функция создает новую пустую книгу. Это то же самое, что выбрать «Новая книга» в меню «Файл Excel».
Когда вы создаете новую книгу, вы, как правило, хотите сохранить ее. Следующий код показывает вам, как это сделать.
Когда вы создаете новую книгу, она обычно содержит три листа. Это определяется свойством Application.SheetsInNewWorkbook.
Если вы хотите, чтобы в новой книге было другое количество листов, измените это свойство перед созданием новой книги. В следующем примере показано, как создать новую книгу с семью листами.
With и Workbook
Ключевое слово With облегчает чтение и написание кода VBA. Использование с означает, что вам нужно упомянуть только один раз. С используется с объектами. Это такие элементы, как рабочие книги, рабочие таблицы и диапазоны.
В следующем примере есть два Subs. Первый похож на код, который мы видели до сих пор. Второй использует ключевое слово With. Вы можете увидеть код гораздо понятнее во втором Sub. Ключевые слова End With обозначают конец кода раздела с помощью With.
Резюме
Ниже приводится краткое изложение основных моментов этой статьи.
Вы можете увидеть краткое руководство по теме в верхней части этой статьи
Заключение
Читайте также: