Excel vba открыть книгу

11.4 Коллекция Workbooks и объект Workbook, их свойства и методы

Объект Excel.Workbook, программная работа с книгами Excel из VBA, создание и открытие книг Excel

Следующий по иерархии после Application объект в объектной модели Excel — это объект Workbook, который представляет книгу Excel. Можно сказать, что объект Workbook занимает в Excel примерно то же место, что и объект Document в Word — он нужен для получения ссылки на нужную нам книгу в наборе открытых книг Excel, а также для настройки общих свойств и выполнения общих действий со всеми листами книги. Получить этот объект можно очень просто:

  • первый способ — воспользоваться коллекцией Workbooks, которая доступна через свойство Workbooks объекта Application. Впрочем, применять это свойство совершенно не обязательно — коллекция Workbooks в Excel и так постоянно доступна. Найти нужную книгу в этой коллекции можно по ее имени или номеру в коллекции:
  • второй способ — использовать свойство Application.ActiveWorkbook. При помощи этого свойства мы обращаемся к активной в настоящей момент книге:
  • третий способ — использовать свойство Application.ThisWorkbook. При этом мы обращаемся к той книге, которой принадлежит данный программный модуль:

На практике чаще всего нам нужно либо создать в Excel новую книгу, либо открыть существующую книгу (или другой файл в формате, который понимает Excel, например, DBF). Для этой цели используются методы Add() и Open() соответственно. Например, создать новую книгу в Excel можно так:

Dim oWbk As Workbook

Set oWbk = Workbooks.Add()

Единственный необязательный параметр, который принимает этот метод — имя шаблона, на основе которого создается новая рабочая книга.

Открытие существующей книги выглядит так:

Dim oWbk As Workbook

Set oWbk = WorkBooks.Open(“C:mybook1.xls”)

Помимо стандартных, в коллекции Workbooks предусмотрено также три специальных метода:

  • OpenDatabase() — открыть базу данных, выполнить к ней запрос (или открыть таблицу/представление напрямую), а результаты запроса поместить как импортированные внешние данные в новую автоматически созданную рабочую книгу Excel;
  • OpenText() — почти то же самое, но в качестве источника здесь выступает текстовый файл. Дополнительные параметры позволяют определять его формат.
  • OpenXML() — в качестве источника данных будет выступать файл в формате XML.

Как и метод InsertDatabase() в Word, эти методы следует использовать только в самых простых случаях. Рекомендуется по возможности использовать более мощные и стандартные средства объектной модели ADO.

Теперь о самых важных свойствах объекта Workbook — самой рабочей книги:

  • Name, CodeName, FullName — разные имена этой книги. Самое простое имя — Name, это имя совпадает с именем файла книги. FullName — это имя файла книги вместе с полным путем к нему в операционной системе. CodeName — как эта книга будет называться в коде. CodeName можно посмотреть в окне Project Explorer или, если открыть свойства книги в окне Properties, кодовое имя книги будет представлено в строке (Name). Все три свойства доступны только для чтения, менять их можно другими способами (например, сохраняя файл под другим именем или прямо в окне Properties).

Определенное отношение к именам имеет также свойство Path (путь к файлу книги) .

  • Charts, Sheets, ActiveChart, ActiveSheet, CustomViews, BuiltinDocumentProperties и CustomDocumentProperties, Windows, WebOptions возвращают одноименные коллекции соответствующих объектов. Некоторые из этих объектов будут рассматриваться ниже.
  • ConflictResolution — как будут разрешаться конфликты изменения данных, если книга открыта несколькими пользователями сразу (shared workbook). Есть возможность сделать так, чтобы локальный пользователь автоматически выигрывал, автоматически проигрывал или возникало диалоговое окно с возможностью разобраться в конфликте вручную. Существует большое количество свойств, которые позволяют настроить параметры совместной работы с книгой, но по причине того, что такая работа не рекомендуется (данные для совместного доступа необходимо переносить в базу данных), рассматриваться они здесь не будут, за исключением:
    • запрещать/разрешать общий доступ к рабочей книге можно при помощи методов SaveAs() или ExclusiveAccess();
    • по умолчанию возможность совместного редактирования для книги отключена (проверить можно при помощи свойства MultiUserEditing);
    • получить список всех пользователей (а также когда они открыли файл и в каком режиме) можно при помощи свойства UserStatus.
  • FileFormat — формат книги (доступен напрямую только для чтения, можно изменять при сохранении). Форматов очень много: множество версий Excel, DBF, Lotus 1-2-3, форматы TXT, CSV, XML — всего несколько десятков.
  • свойство Names возвращает коллекцию всех именованных диапазонов в данной рабочей книге. Получить информацию о всех именованных диапазонах в данной книге можно, например, так:

For Each Item In ThisWorkbook.Names

Это свойство удобно использовать для предварительных проверок для устранения потенциальных ошибок времени выполнения.

Методов у объекта Workbook также очень много, однако значения самых употребимых — Activate(), Close(), Save(), SaveAs(), PrintOut(), Protect() и Unprotect() очевидны и действуют аналогично одноименным методам объекта Document в Word.

Читайте также:  Как в excel добавить к числу процент

Источник: www.askit.ru

Excel vba открыть книгу

Здравствуйте
как макросом книги 1 открыть закрытую книгу 2 Excel .

В идеале нужно поработать макросом в зарытой книге а у меня почему то макрос книги 1 не работает в закрытой книге 2)

пробовал прописать макрорекордером открытие книги – тоже не помогло ((((

Может кто нибудь в курсе можно ли так сделать ?

. очень нужна помощь .

Здравствуйте
как макросом книги 1 открыть закрытую книгу 2 Excel .

В идеале нужно поработать макросом в зарытой книге а у меня почему то макрос книги 1 не работает в закрытой книге 2)

пробовал прописать макрорекордером открытие книги – тоже не помогло ((((

Может кто нибудь в курсе можно ли так сделать ?

. очень нужна помощь . ek09

Сообщение Здравствуйте
как макросом книги 1 открыть закрытую книгу 2 Excel .

В идеале нужно поработать макросом в зарытой книге а у меня почему то макрос книги 1 не работает в закрытой книге 2)

пробовал прописать макрорекордером открытие книги – тоже не помогло ((((

Может кто нибудь в курсе можно ли так сделать ?

. очень нужна помощь . Автор – ek09
Дата добавления – 05.06.2013 в 22:13

Serge_007 Дата: Среда, 05.06.2013, 22:20 | Сообщение № 2

У Вас слишком много знаков вопроса и скобок

А макрорекордер пишет открытие:
[vba]

У Вас слишком много знаков вопроса и скобок

А макрорекордер пишет открытие:
[vba]

Яндекс-деньги:41001419691823 | WMR:126292472390

Ответить

У Вас слишком много знаков вопроса и скобок

А макрорекордер пишет открытие:
[vba]

Hugo Дата: Среда, 05.06.2013, 22:55 | Сообщение № 3

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Ответить

Serge_007 Дата: Среда, 05.06.2013, 23:15 | Сообщение № 4

Яндекс-деньги:41001419691823 | WMR:126292472390

Ответить

Hugo Дата: Среда, 05.06.2013, 23:17 | Сообщение № 5

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Ответить

KuklP Дата: Четверг, 06.06.2013, 06:11 | Сообщение № 6

Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Ответить

KuklP Дата: Четверг, 06.06.2013, 06:45 | Сообщение № 7

Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

Ответить

AndreTM Дата: Четверг, 06.06.2013, 09:34 | Сообщение № 8

Skype: andre.tm.007
Donate: Q iwi: 9517375010

Hugo Дата: Четверг, 06.06.2013, 09:58 | Сообщение № 9

Сергей, ну в общем конечно “не притрагиваясь” к файлу в нём ничего изменить нельзя. Ну разве что если только изменив адресацию диска

И кстати только что проверил – работают оба варианта SQL/ADO. И добавляет, и обновляет.

Сергей, ну в общем конечно “не притрагиваясь” к файлу в нём ничего изменить нельзя. Ну разве что если только изменив адресацию диска

И кстати только что проверил – работают оба варианта SQL/ADO. И добавляет, и обновляет. Hugo

excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069

Ответить

Сообщение Сергей, ну в общем конечно “не притрагиваясь” к файлу в нём ничего изменить нельзя. Ну разве что если только изменив адресацию диска

И кстати только что проверил – работают оба варианта SQL/ADO. И добавляет, и обновляет. Автор – Hugo
Дата добавления – 06.06.2013 в 09:58

Источник: www.excelworld.ru

Как внести данные в книгу Excel, не открывая окно с книгой?

23.07.2012, 09:48

Как извлечь данные из Excel не открывая файл?
ВОПРОС Как извлечь данные из Excel не открывая файл? СЦЕНАРИЙ 1. В поле “ID” вводим.

Как из Excel/Vba внести открытую книгу в SQL Server 7 как OLE объект?
Хотелось бы так: При нажатии соотв. кнопки. соединить с SQL Serverом и сохранить activesheet в SQL.

Произвести манипуляции с данными в Excel, не открывая книгу по нескольку раз
здравствуйте, такая проблема: есть функция private void searchRegR(string strpat, int l) <.

Не открывая книгу Excel проверить совпадение шапок всех листов книги с заданной шапкой
быстро и не открывая книгу EXCEL проверить совпадение шапок всех листов книги с заданной шапкой ( в.

23.07.2012, 10:04 2

Решение

Visual Basic
Visual Basic
Visual Basic
Visual Basic
23.07.2012, 12:08 [ТС] 3

Спасибо. Но это не то, что я имел в виду.

Поясню: если в книге Book1 в ячейку листа вставить формулу, ссылающуюся на ячейку в другой книге Book2, то при пересчете значения этой формулы книга Book2 (закрытая на момент пересчета) не открывается. Пересчет происходит практически мгновенно, в то время как открытие новой книги занимает ощутимое время (около 2 секунд). Из чего я делаю вывод, что Excel дотягивается до данных в закрытой книге Book2, не просто скрывая открытое окно, а просто считывая данные из файла, как это происходит, например в C++ или Java, где при открытии файлов для чтения, окна с файлами не открываются.

Скажите, верны ли такие рассуждения.

23.07.2012, 13:37 4
23.07.2012, 22:24 5

mc-black, вроде только активный. Но видя это Create Excel Workbook (BIFF8) without having Excel Installed думается, что возможно все.

bodeaux, возможно Вам подойдет ExecuteExcel4Macro. Почитайте тему Вытянуть данные из закрытых книг в Excel
Там есть файл с примером. Да и вообще поиском по форуму с этим ключевым словом – будет полезно.

Источник: www.cyberforum.ru

Автоматический запуск макроса при открытии книги

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Макрос, записанный может потребоваться автоматически выполняются при открытии конкретной книги. Пример использует следующую процедуру для показано, как это работает. Можно также запустить макрос автоматически при запуске Excel.

Прежде чем начать, убедитесь, что отображаются вкладки ” Разработчик ” на ленте. Подробнее читайте вкладку “Разработчик”.

Чтобы использовать в приведенном ниже примере, откройте новую книгу.

Важно: Код VBA не может быть отменено, поэтому убедитесь, что для тестирования кода на пустую книгу или копию существующей книги. Если код не вас устраивают, закройте книгу без сохранения изменений.

Откройте вкладку Разработчик и щелкните элемент Visual Basic.

В левой части Проекта VBA разверните папку Проекта VBA для книги, а затем дважды щелкните модуль ЭтаКнига . Если вы не видите окно проекта, можно перейти в режим > Окно проекта или нажмите клавиши Ctrl + R.

В открывшейся в правой части окна модуля вставьте следующий код:

Вставьте код записанные в подпрограмме между строками Sub и End Sub.

Закройте Редактор Visual Basic (не нужно ничего сохранять).

Сохранение книги в виде книги Excel с поддержкой макросов (* xlsm) и закройте ее.

При открытии книги, код, добавленных на процедуры Workbook_Open будет выполняться автоматически.

Прежде чем начать, убедитесь, что отображаются вкладки ” Разработчик ” на ленте. Это можно сделать:

В меню выберите команду Excel > предпочтения. > ленты и панели инструментов.

В категории настроить ленту в списке Основные вкладки установите флажок Разработчик.

Нажмите кнопку Сохранить.

Чтобы использовать в приведенном ниже примере, откройте новую книгу.

Важно: Код VBA не может быть отменено, поэтому убедитесь, что для тестирования кода на пустую книгу или копию существующей книги. Если код не вас устраивают, закройте книгу без сохранения изменений.

Откройте вкладку Разработчик и щелкните элемент Visual Basic.

В левой части Проекта VBA разверните папку Проекта VBA для книги, а затем дважды щелкните модуль ЭтаКнига .

В открывшейся в правой части окна модуля вставьте следующий код:

Вставьте код записанные в подпрограмме между строками Sub и End Sub.

Закройте Редактор Visual Basic (не нужно ничего сохранять).

Сохранение книги в виде книги Excel с поддержкой макросов (* xlsm) и закройте ее.

При открытии книги, код, добавленных на процедуры Workbook_Open будет выполняться автоматически.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

Источник: support.office.com

Канал в Telegram

Вы здесь

Определяем количество открытых книг, страниц и их имена. Конструкция For Each . Next

В статье “Иерархия(структура) рабочей книги Excel” была рассмотрена структура рабочей книги, листа и приложения в целом. Из этого возникает вопрос, каким образом можно получить, например кол-во страниц в книге Excel, или их имена. С количеством все просто, к примеру, для того чтобы получить кол-во открытых книг, достаточно воспользоваться следующей командой:
Application.Workbooks.Count

Чтобы получить кол-во страниц в активной книге:
ActiveWorkbook.Worksheets.Count

Если же требуется получить кол-во страниц в определенной книге для этого воспользуйтесь:
Workbooks(1).Worksheets.Count
или
Workbooks(“имя книги.xls”).Worksheets.Count

В первом случае обращение к нужной книге происходит по индексу. Индекс присваивается в порядке открытия книг. Этот вариант не совсем удобен если необходимо обратится к конкретной книге т.к. книги могут открываться в разном порядке. Поэтому второй вариант команды позволяет обратиться к книге по ее полному имени.

Теперь перейдем к рассмотрению работы с конструкцией For Each . Next.

Синтаксис конструкции For Each . Next

For Each Элемент In Коллекция(Группа)
[команды][Exit For]
[команды]Next [Элемент]

Данная конструкция позволяет поочередно обратится к каждому элементу группы или коллекции. Коллекция это группа одинаковых (однотипных) объектов. Например, массивы, или коллекции WorkBooks, Worksheets .
For Each . Next по принципу работы похож на цикл For. Next, который был рассмотрен здесь. Схожесть в том что, перебирается каждый элемент коллекции или группы по порядку. Не буду томить скучной теорией перейдем к рассмотрению примеров.

Пример 1. Необходимо получить имена всех открытых книг Excel. Имена всех рабочих книг доступны в коллекции Workbooks.

Sub GetWorkBooksName()
Dim WBooks As Workbook
Dim Msg As String

For Each WBooks In Workbooks
Msg = Msg & WBooks.Name & Chr(13)
Next WBooks

MsgBox Msg
End Sub

Пример 2. Необходимо получить имена всех страниц в активной книге. Имена страниц содержатся в коллекции Worksheets.

Sub GetWorkSheetsName()
Dim Item As Worksheet

For Each Item In ActiveWorkbook.Worksheets
MsgBox “Отображаемое имя листа ” & CStr(Item.Index) & ” – ” & Item.Name
Next Item

Пример 3. Необходимо посчитать кол-во страниц во всех открытых книгах Excel.

Sub GetAllCountSheets()
Dim WBooks As Workbook
Dim kolSheet As Long
Dim Msg As String

kolSheet = 0
For Each WBooks In Workbooks
kolSheet = kolSheet + Workbooks(WBooks.Name).Worksheets.Count
Next WBooks

MsgBox “Всего страниц в открытых книгах: ” & CStr(kolSheet)

Пример 4. Необходимо преобразовать весь текст в выделенном диапазоне ячеек в верхний регистр т.е. сделаем буквы большими. Для этого воспользуемся коллекцией Selection (тип Range – хранит область выделенных ячеек) и функцией перевода символов в верхний регистр UCase (если необходим перевод в нижний регистр, то воспользуйтесь функцией LCase).

Sub RangeUpCase()
Dim Cell As Range

For Each Cell In Selection
Cell.Value = UCase(Cell.Value)
Next Cell

Выделяем нужные ячейки или диапазон ячеек с текстом и запускаем макрос.

Пример 5. И заключительный пример, закроем все рабочие книги Excel, кроме активной, без сохранения.

Sub CloseBooks()
Dim WBook As Workbook

For Each WBook In Workbooks
If WBook.Name <> ActiveWorkbook.Name Then WBook.Close False
Next WBook

За закрытие книги Excel отвечает команда WBook.Close. Параметр False указывает, что закрываем все книги без сохранения. Если этот параметр изменить на True, то все книги будут закрываться предварительно сохранившись. Если же этот параметр убрать, то при закрытии книг с внесенными изменениями выскочит диалоговое окно с вопросом о сохранении.

Все примеры, рассмотренные в статье, Вы можете скачать ниже. Все.

Источник: www.programm-school.ru

Excel works!

Excel работает за вас

Excel works!

Thanks for Visiting

Как найти только что закрытый файл? Как быстро найти и открыть книгу Excel в т.ч. в VBA?

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

Что файл Excel открывается двойным щелчком по нему, я рассказывать не буду, мы поговорим о более сложных способах вызова книги Excel.

Как найти и открыть книгу из самой программы? Горячая клавиша

Зачастую пользователи не знают, что открыть книгу можно и не сворачивая Excel. Перейдите в меню файл (круглая кнопка в левом верхнем углу) — нажмите Открыть и выберите необходимую папку:

Так же работает горячая клавиша Ctrl+O .

Как найти и открыть недавно закрытую книгу Excel?

Если вы забыли куда сохранили только что созданную книгу (у меня так бывает), то найти ее не будет проблемой. Открыть последние используемые файлы можно через панель Последние документы. Опять же откройте меню файл (для версий 2007 и выше) и вы сразу увидите последние используемые вами файлы Excel.

Видите гвоздики справа? Вы можете закрепить какой-то файл при помощи них, и он всегда будет доступен здесь. Удобно, когда вы часто пользуетесь одним и тем же файлом. Просто кликните по гвоздику, и файл закрепится.

При открытии любой книги Excel в разделе Последние документы будет висеть закрепленный таким образом файл.

Список последних файлов будет меняться в зависимости от того, с какими файлами вы работаете. Список файлов состоит 25 элементов, но если зайти «Файл»-«Параметры»-«Дополнительно»-«Экран»-«Число документов в списке последних файлов:», то можно установить свое значение до 50 файлов.

В версиях программы 2013 и выше последние файлы доступны в меню кнопки открыть.

Как открыть уже открытые файлы?

Если у вас множество файлов, то иногда проще их найти при помощи инструментом закладка «Вид» раздел «Окно» инструмент «Перейти в другое окно».

Функция Перейти в другое окно в версии Excel 2016

Как открыть несколько книг рядом?

Если вам необходимо открыть несколько книг или окон рядом, то это тоже несложно. Возможность редактора подробно описана здесь .

Как закрыть или открыть книгу Excel через VBA?

Если у вас больше 15 файлов, которые надо регулярно открывать один за одним, то удобно будет записать макрос для открытия этих книг. Как записать макрос, читайте в отдельной статье .

Вам необходимы отдельные функции для открытия или закрытия Excel через VBA? Например, вам нужно, чтобы файл закрывался после окончания выполнения макроса, используйте такие команды:

Где C:primer.xlsx путь к файлу

Где ClsBK — переменная, которой присваиваем имя открытой книги, а потом закрываем.

Источник: excelworks.ru

Добавить комментарий

Adblock
detector