|
|
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Добрый день! Вот о чем речь: Сейчас формируется файл (назовем его к "Сводный"), где банально в столбик должны быть перечислены сотрудники, так вот в соседних столбиках каждого сотрудника подразумевается вести мониторинг его деятельности следующим образом: в шапки в строчку перечислены ФИО сотрудника, задача и дни календаря от 1 до 31, в столбик сотрудники, напротив каждого сотрудника его задача, и далее свободный массив ограниченный сверху календарными днями а слева задачами (1 задача на 1 строчку массива). Все это вроде как присказка - чтобы дать описание так сказать. В чем суть проблемы. Абсолютное большинство задач выполняется на Excel, поэтому поставлена задача средствами Excel выполнить мониторинг работы сотрудников (т.е. когда начали выполнять задачу, в течении выполнения, когда закончили). Понятно что лучше бы иметь исходники в виде файлов но таких нет. Для себя начал процесс с ознакомления с функцией из категории "Дата и время" - "ТДАТА" (возвращает текущую дату и время в формате даты и времени", другими словами в указанной ячейки будет отображаться системной время и дата, и затем при каждом действии с файлом (добавление новых данных, удаление, в общем любое действие - эти параметры (время и дата) обновляются). Можно сделать следующее установить функцию "ТДАТА" на всех книгах сотрудников где решается задача и сделать ссылки на эту ячейку на против каждой задачи в файле "Сводный". Это даст возможность видеть что если данные начали менять то и процесс начался если не изменяются – то закончился, но есть одна проблема. Проблема: если у сотрудника в книге есть 2 страницы на каждой из которых решается своя задача (при этом существующей организационный процесс не позволит создать отдельно каждый файл под свою задачу), то результат мониторинга решения задачи не до конца корректный, т.к. изменения данных на любой из страниц влияет на изменение функции "ТДАТА" всей книги. Вопрос можно ли подобную функцию (речь про "ТДАТА") реализовать так чтобы она обновлялась при изменении на отдельном листе, а для некоторых задач еще нужно и привязка к конкретной ячейки или диапазону ячеек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2010, 19:46 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
В прикрепленном документе – есть небольшой пример, с примечаниями в файле «Сводный». ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2010, 20:24 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Читал между строк и ничего не понял Если Вам надо фиксировать начало и конец выполнения какой-либо операции, так пусть тот, кто будет заполнять книги (не сводную) и ставит там дату начала и конца, зачем функция ТДАТА? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2010, 21:47 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
mЧитал между строк и ничего не понял Если Вам надо фиксировать начало и конец выполнения какой-либо операции, так пусть тот, кто будет заполнять книги (не сводную) и ставит там дату начала и конца, зачем функция ТДАТА? так не пойдет, нужно именно удаленно получать информацию без вмещательства того кто заполняет книгу (не сводную) - что-то вроде функции контроля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 09:38 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Опишите, пошагово, как должен происходит процесс контроля, подумаем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 11:37 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
TopTin, для того, чтобы избавится от летучести формулы ТДАТА() можно предложить использовать макрос который срабатывает при изменении ячейки диапазона и подставляет в B1 дату изменения конкретного листа. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Правой кнопкой мыши по ярлычку листа -> Исходный текст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 12:32 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
TopTin, а зачем нужен такой тотальный контроль? Я особого смысла не вижу. сотруднику можно будет предложить такой же простенький макрос, который будет изменять ячейки через определенный интервал времени, а сам он будет или курить или чай пить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 12:35 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Сергей06, спасибо за макрос, сейчас буду пробовать его применить. А контроль как мне видется нужен как раз, чтобы сотрудник шел пить кофе или курить только после того сделал свой расчет/задание (одним словом дело) - ну да ладно, это все лирика и пожелания руководства. Отпишу чуть-позже, что получилась на практике у меня с макросом (может какие вопросы появятся). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 15:50 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Сергей06, конечно же все работает (думаю Вы и не сомневались!) - спасибо... Если сможите, подскажите как оптимизировать Ваш макрос, дело в том, что мне надо сделать не маленькое количество контрольных диапазонов, однако: 1. Первое: большинство из может имеет одинаковую структуру, т.е. есть 6 разных книг (разные названия книг), в этих книгах по 5 функциональных листов. Так вот надо на каждом листе выбрать контролируемый диапазон и перенести его в файл "Свод". Если учитывать, что в каждая книга имеет разное название и внутренние наполнения цифр, но расположение контролируемого диапазона на листах идентично. 2. Второе: Период работы с книгой - месяц, через месяц книга со старыми полученными результатами храниться (вроде как архив), и создается новая книга. Вопрос: раз внутренние диапазоны идентичны и раз из месяца в месяц появляется новая аналогичная книга - есть ли возможность оптимизировать настройку связей мне необходимых?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2010, 19:27 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Сергей06, при практическом применении появилась еще одна особенность. Так как книга "Свод" (на которую завязаны все ссылки с книг сотрудников) находится не на сетевом диске обновление этих ссылок не происходит автоматически, а только при открытии книги по запросу обновить, или через командную консоль - Правка/Связи (можно в ручном режиме обновлять по одной связи) - в этом случаи вопрос - если связей не мало и не удобно постоянно закрывать/открывать книгу чтобы их обновить или делать это пошагово (по одной связи) - можно ли сделать макросом какую-то кнопку прописав на нее определенный диапазон связей, которые обновлялись бы нажатием этой кнопки?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 07:40 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
TopTin, не знаю, как автоматически обновлять связи... и в форуме на быструю руку ничего не нашел, кроме своих же вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 12:12 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Ну а записать это действо в макрос не пробовали? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 13:05 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Hugo121Ну а записать это действо в макрос не пробовали? Код: plaintext 1. 2. Hugo121, а указать также как и в ответе Сергей06 можете что именно где добавить (имя файла, диапазон) и как использовать? Я так понимаю речь идет об автоматическом обновлении?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 13:15 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Ну так подробно в этом случае зачем? C:\тест.xls - это имя файла, откуда обновляются данные. Диапазона никакого нет, обновляет все связи с этим файлом. Это я так думаю - просто записал процесс в макрос, смотрю, что получилось. Т.е. если так перечислить все свои связанные файлы и добавить это всё в код кнопки, можно обновлять по нажатию на кнопку. Надо подробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 13:21 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Hugo121Ну так подробно в этом случае зачем? C:\тест.xls - это имя файла, откуда обновляются данные. Диапазона никакого нет, обновляет все связи с этим файлом. Это я так думаю - просто записал процесс в макрос, смотрю, что получилось. Т.е. если так перечислить все свои связанные файлы и добавить это всё в код кнопки, можно обновлять по нажатию на кнопку. Надо подробнее? Если можно да! А именно - я уточнил как сделать кнопку и назначить для неё макрос, но вот как правильно макрос записать - не знаток. Мог бы ты, Hugo121, написать макрос так чтобы его достаточно было вставить в лист/исходный текст (конечно имя файла вместо C:\тест.xls я напишу, кстати как быть если этих файлов несколько, писать через запитую? столбцом? нужны кавычки?) в общем если можешь дай заготовку полную! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:16 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Делаешь кнопку, правым мышом -> Назначить макрос (у меня View Code), туда вставляешь текст Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Хотя я сам такого не делал (разве что сегодня начало кода сгенерил), так что испытывать тебе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 14:59 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Hugo121, сделал все как ты написал, но результат пока не получился. Все исходники в прикрепленном файле - можешь посмотреть в чем неточность! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 19:42 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
TopTin, Нужно положить файл "Второй" в D:\E_M\Взаимод_ДОРЭ\Для инета\, в файле "Взаимодействие5_Проба вне лок_сети" в ячейке D3 написать формулу ='D:\E_M\Взаимод_ДОРЭ\Для инета\[Второй.xls]Лист1'!$B$1, а потом уже запускать макрос. А у тебя в D3 совсем другой путь для ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2010, 21:11 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
_Boroda_, Все сделал как написано. Что интересно когда проверяю связи с книгой вне локальной сети т.е. адрес короткий "='D:\E_M\Взаимод_ДОРЭ\Для инета\[Второй.xls]" вроде бы работает (т.е. однозначно проверить не могу, т.к. это не локальная сеть то я сам меняю данные в файле "Второй" и они тут же без обновления изменяются и в файле сводный, т.е. как таковая кнопка обновления не нужна), а вот когда решил проверить обновления в лок.сети, т.е. адрес длинный "='\\10.2.62.125\folders\Департамент ОРЭ\ОСР\Ежедневное сопровождение рынка\1 заявки АТС\заявки ТЭУ\[Заявки ТЭУ 2010 ЯНВАРЬ.xls]1'!$A$100" - появляется ошибка следующая "Run-time error `1004`, Method `UpdateLink` of object`_Workbook` failed!". Результат практического применения в прикрепленном файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 08:20 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Попробуйте так написать: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 09:34 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Т.е. у Вас адресов тоже нет в коде, но вот квадратные скобки есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 09:38 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Hugo121, все ok (вроде все работает). Вопрос, если у меня ссылок немало, мне их придётся всегда прописывать сначала в книгу потом в макрос обновления (т.е. тот о котором речь в ветке и идет), а возможно просто установить связи и сделать макрос который сам бы подставил написание связей в другой макрос (макрос обновления) ведь в командных кнопках Excel в разделе "Правка/Связь" после установления связи с другой книгой появляется название установленных связей, может они где-то хранятся и их можно макросом брать и вставлять в макрос обновления?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 14:13 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
Если ссылки постоянно меняются, тогда даже не знаю, как автоматизировать. Вообще-то можно макрос програмно формировать и вставлять в файл, но надо разбираться. Но если это надо корректировать нечасто, я бы сделал так: 1. Вообще надо только выбрать полные пути к файлам, а не к каждой ячейке, вряд ли файлов будет очень много. 2. На листе жмём Ctrl+~`, выделяем нужный диапазон, копируем уже формулы в Ворд/Блокнот 3. Вручную сортируем по алфавиту, убираем [] и адреса ячеек, дополняем текст до "пути к файлам" и после. Можно это и в Экселе делать, заменив = например на xyzxyz. Затем поменять назад, уже в редакторе VBA 4. Примерно так, имхо немного работы, если руку набить Хотя если в формулах есть действия с значениями из этих книг, будет посложнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 15:53 |
|
||
|
Взаимодействие одной книги эксель с другой
|
|||
|---|---|---|---|
|
#18+
TopTin, вот нашел макрос который обновляет все связи. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Чтобы создать такую книгу нужно: - Сервис - Маркос - Начать запись - Сохранить в личной книге макросов - ОК - остановить запись. Дальше: Нажать Альт + F11. появится окно редактора ВБА Войти в Модуль1 Скопировать туда код закрыть ВБА Дальше: На панели инструментов щелкнуть правой кнопкой мыша. выбрать настройки - Команды - макросы - настраиваемая кнопка. взять эту кнопку мышью и перетащить на удобное место любой панели. не закрывая окна настройки кликнуть по новой кнопке правой мышкой. выбрать макрос... выбираем макрос с именем UpdLink потом настраиваем кнопку как нравица (название, быстрые клавиши, картинки на кнопке) закрываем окно настройки. теперь имеем кнопку, при нажатии на которую в активной книге будут обновлены все связи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2010, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=174&tid=2178606]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
19ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 344ms |

| 0 / 0 |
