Здравствуйте. Кто может подсказать где можно найти информацию по работе с двумя книгами одновременно? В частности различные способы переноса необходимой информации с одной книги в другую средствами VBA.
У меня такая ситуация. Имеется две книги:
1) Одна называется "Журнал работ". В первом листе вносятся данные о работе сотрудников за каждый день(Дата, ФИО сотрудника, номер работы и т.д)([ATTACH]1812[/ATTACH] ). Во втором листе "Отчет" формируется сводная таблица по фамилии сотрудника и по номеру работы ( [ATTACH]1814[/ATTACH]).
2) Во второй книге "По зарплате" так же хранится та же таблица что и на листе "Отчет", только с дополнительными строками, столбцами и вычислениями. На нем произносится расчет по зарплате на основе этой таблицы.
[ATTACH]1813[/ATTACH]
Мне необходимо создать в книге "По зарплате" процедуру, которая сформирует отчет в книге "Журнал работ" по определенному месяцу и перенесет данные в книгу "По зарплате"
Пытался это реализовать с помощью массива, но не получилось перенести сформированный массив обратно в книгу "По зарплате".
Так же пробовал с банальным копированием диапазона(Range) из одной книги в другую, но в связи с тем что структура отчетов по каким либо причинам могут меняться, мне данный метод не подошел, т.к при копировании нужные данные могут затираться
Дошел до варианта подстановки листов с разных книг в процедуре листа "Отчет"(книга Журнал работ), но с этим возникла сложность. Не знаю как вместо названия листа (допустим "Sheets("Отчет")") использовать переменную, в которую при необходимости будет присваиваться нужный лист
Работа в VBA с двумя книгами Excel
Модератор: Naeel Maqsudov
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Попробуйте для начала вообще отказаться от переноса данных
1) делайте всё одной книге или
2) используйте в формулах внешние ссылки
Непонятно, как формируется отчёт, сводными таблицами (тогда, кстати, сводная таблица могла бы брать данные из другой книги по внешней ссылке), или макросом?
Если сейчас отчёт у вас формируется макросом, и Вам непременно надо, чтобы вторая книга была отдельным документом, то просто "допилите" макрос формирующий отчёт, пусть он кладёт данные сразу в обе книги.
Не существует никаких
1) делайте всё одной книге или
2) используйте в формулах внешние ссылки
Непонятно, как формируется отчёт, сводными таблицами (тогда, кстати, сводная таблица могла бы брать данные из другой книги по внешней ссылке), или макросом?
Если сейчас отчёт у вас формируется макросом, и Вам непременно надо, чтобы вторая книга была отдельным документом, то просто "допилите" макрос формирующий отчёт, пусть он кладёт данные сразу в обе книги.
Не существует никаких
. Всё что работает в одной книге, работает и между книгами. См. коллекцию Application.Workbooksразличных способов переноса необходимой информации с одной книги в другую средствами VBA
У меня нет возможности использовать все в одной книге, т.к эти книги располагаются на разных локальных компьютерах разными сотрудниками, а из этого соответственно для каждого доступна только конкретная информация.
Где можно подробно узнать о коллекции Application.Workbooks?
Какого типа должна быть переменная чтобы к ней присвоить Sheets("Журнал работ") и в дальнейшем допустим использовать.К примеру:
Dim LBook as ???
LBook = Sheets("Журнал работ")
.........................
LBook.Cells(1,1).Value = 1
Где то уже видел подобный пример, но не могу вспомнить как она реализовывалась.
Где можно подробно узнать о коллекции Application.Workbooks?
Какого типа должна быть переменная чтобы к ней присвоить Sheets("Журнал работ") и в дальнейшем допустим использовать.К примеру:
Dim LBook as ???
LBook = Sheets("Журнал работ")
.........................
LBook.Cells(1,1).Value = 1
Где то уже видел подобный пример, но не могу вспомнить как она реализовывалась.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Подробнее про коллекцию
1) в справке по VBA (опционально устанавливается вместе с офисом)
2) в Object Borowser, который вызывается по F2 в VBA-редакторе, можно видеть все классы с из свойствами и методами. Именно здесь можно быстро познакомиться с объектной моделью офисного приложения.
Скажите, а есть ли у вас какой-нибудь корпоративный файл-сервер, где файлы можно было бы расшарить между всеми участниками бизнес-процесса?
Ведь для копирования данных вы же всё равно на одной из этих рабочих станций таки берёте и открываете оба файла одновременно.
Ну а раз так, то любой макрос может
1) делать Workbooks.Open(...)
3) Workbooks("Другой файл").WorkSheets("Журнал работ").Cells(1,1).Value = 123
2) Workbooks("Другой файл").Close(...)
PS
А макрос для составления отчёта Вы сами писали?
Если нет, то может обратиться к разработчику, чтобы доделал?
1) в справке по VBA (опционально устанавливается вместе с офисом)
2) в Object Borowser, который вызывается по F2 в VBA-редакторе, можно видеть все классы с из свойствами и методами. Именно здесь можно быстро познакомиться с объектной моделью офисного приложения.
Скажите, а есть ли у вас какой-нибудь корпоративный файл-сервер, где файлы можно было бы расшарить между всеми участниками бизнес-процесса?
Ведь для копирования данных вы же всё равно на одной из этих рабочих станций таки берёте и открываете оба файла одновременно.
Ну а раз так, то любой макрос может
1) делать Workbooks.Open(...)
3) Workbooks("Другой файл").WorkSheets("Журнал работ").Cells(1,1).Value = 123
2) Workbooks("Другой файл").Close(...)
PS
А макрос для составления отчёта Вы сами писали?
Если нет, то может обратиться к разработчику, чтобы доделал?
Полностью всю программу я писал сам, так что помощи не от кого ждать, да и не интересно так