|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
Доброго времени суток! Возникла такая задача. Есть книга (data.xlsx), лежащая в сетевой папке, доступной только небольшой группе пользователей (т.к. в ней содержится закрытая информация). Тем не менее, сводка по части данных из этой книги должна быть видна многим. Что пытаюсь для этого сделать - создаю книгу res.xlsx в папке, доступной многим, создаю в ней подключение к data.xlsx в виде сводки. В data.xlsx пишу макрос, который открывает res.xlsx, обновляет в ней сводку (через RefreshAll), сохраняет и закрывает. Вроде бы все замечательно, но когда макрос вызывается при открытой data.xlsx - Excel падает. Если тот же макрос вызывать при закрытой data.xlsx - все замечательно работает. Стал искать причину, создал тестовый пример, долго с ним ковырялся - в какой-то момент внезапно заработало. Возвращаюсь к исходным файлам - снова падает. Стал искать разницу между работающим и неработающим вариантом, и нашел только одно отличие - строка подключения к файлу с данными. В работающем примере она такая: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2013, 18:07 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
таки в чем проблема - пропишите руками другой вид подключения. этих строк благо уйма. даже сайтик есть http://www.connectionstrings.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 09:22 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
PlanB, проблема как раз в том, что у меня это не получается. Жму в файле на кнопку "подключения", в вылезшем окошке выбираю нужное, жму на "свойства", в окошке свойств перехожу на вкладку "Определение", меняю строку подключения, жму "ОК", проверяю свойства снова - и вижу, что ничего не изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 13:32 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
Slip, пропишите подключение в коде макроса! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 14:05 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
PlanB, я правильно понимаю, что тогда макрос будет открывать файл со сводкой, менять в нем строку подключения, обновлять и сохранять? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 14:19 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
SlipPlanB, я правильно понимаю, что тогда макрос будет открывать файл со сводкой, менять в нем строку подключения, обновлять и сохранять?вот ссыль на связку excel-access. Сделайте то же самое, только excel-excel прямо в редакторе VBA. там все доступно написано. строку подключения возьмите с connectionstrings. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 15:06 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 15:06 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
PlanB, спасибо, сейчас буду реализовывать этот вариант. Но в нем есть недостаток - придется создавать сводку вручную, из макроса. А если конечный пользователь (а это не я) захочет изменить структуру сводки - придется менять и макрос. Да и вообще хотелось бы понять причину такого странного поведения. Подскажите, куда в этом вопросе копать? В чем может быть дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 16:30 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
SlipPlanB, спасибо, сейчас буду реализовывать этот вариант. Но в нем есть недостаток - придется создавать сводку вручную, из макроса. А если конечный пользователь (а это не я) захочет изменить структуру сводки - придется менять и макрос. Да и вообще хотелось бы понять причину такого странного поведения. Подскажите, куда в этом вопросе копать? В чем может быть дело?а изменить структуру запроса пользователем очень просто - храните запрос в ячейке на листе. пользователь сможет ее корректировать по своему усмотрению. правда есть такой момент, что он может туда ввести запрос вида select * from my_table. и вот тогда смысл всей buihs в прятки потеряется и он выгрузит весь файл. с другой стороны, что мешает пользователю сделать то же самое и в редакторе подключения... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 16:54 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
тут же есть 2 типа пользователей - маленькая группа, которая имеет доступ к файлу с данными, и все остальные. Все остальные даже сводку самостоятельно обновить не смогут, т.к. у них нет доступа к файлу с данными. Собственно, для этого и нужен макрос. А пользователь, который может менять структуру сводки - это один из той небольшой группы, у которой есть доступ к файлу с данными. Так что вариант с запросом в ячейке должен бы сработать. Но все равно интересно, из-за чего excel вылетал при обновлении:) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 17:12 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
Slipтут же есть 2 типа пользователей - маленькая группа, которая имеет доступ к файлу с данными, и все остальные. Все остальные даже сводку самостоятельно обновить не смогут, т.к. у них нет доступа к файлу с данными. Собственно, для этого и нужен макрос. А пользователь, который может менять структуру сводки - это один из той небольшой группы, у которой есть доступ к файлу с данными. Так что вариант с запросом в ячейке должен бы сработать. Но все равно интересно, из-за чего excel вылетал при обновлении:)а вы, простите, сохранялись? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 17:14 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
PlanB, не понял, это вы к чему? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 17:15 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
а вы ничего не перепутали в описании (которое я до этого внимательно не читал)? как так макрос вызывается при закрытой книге, в которой находится? у вас не происходит двойного открытия книги? у вас не происходит двойного открытия одного и того же подключения? я считаю, что происходит. закрывайте одно и открывайте новое. а если лень ковыряться - тупо переделайте логику. не надо никаких рефрешей. тупо делаете в тайной книге sql-запрос к ее же листу (так можно) по некоему тексту и копируете результат в общую книгу. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 17:24 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
какую ошибку выдает? текст, скрин? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 17:24 |
|
Excel 2010, сводка по данным из другой книги
|
|||
---|---|---|---|
#18+
Насколько я понимаю, нет. Забыл сказать, что макрос уже реализован в виде надстройки к excel. Давайте, на всякий случай, еще раз логику "тайная" книга data.xlsx - лежит в закрытой для всех папке, содержит кучу данных, с ней постоянно идет работа, т.е. она почти всегда открыта "публичная" книга res.xlsx - лежит в доступном всем месте, содержит подключение к data.xlsx в виде сводки. Ее суть - показать только ту информацию из data.xlsx, которую всем можно видеть. Если обычный пользователь открывает res.xlsx и пытается обновить сводку сам - получает ошибку, т.к. у него нет доступа к data.xlsx. Поэтому пишу макрос (надстройку), которой будут пользоваться те, у кого есть доступ к data.xlsx. Макрос открывает res.xlsx, обновляет сводку и сохраняет результат. Т.к. вызывается пользователем, у которого есть доступ к data.xlsx - ошибок доступа нет. Макрос (в исходном виде, при котором была ошибка), такой: открываем res.xlsx вызываем для нее RefreshAll сохраняем res.xlsx и закрываем его Если честно, я не вижу, где тут могут быть проблемы. Возможно, при вызове RefreshAll data.xlsx открывается в фоне (например, только на чтение) и конфликт тут. А ошибка вот такая ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2013, 17:38 |
|
|
start [/forum/topic.php?fid=61&msg=38234564&tid=2174846]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 446ms |
0 / 0 |