Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Задача следующая: Есть лист со сводной таблицей. При двойном клике на pivot создается лист с детализацией данных. В этот момент необходимо перехватывать создание этого листа и скрыв от пользователя взять с него данные и провести определенные действия. После чего лист удалить. Код такой располагается в коде книги Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Но есть косяк, в момент создания листа пользователь видит этот лист долю секунды. Потому кот выполняется после события. Тогда в коде листа я вешаю следующую обработку Код: plaintext 1. 2. 3. 4. Соответственно в коде события нового листа я обновления только включаю в конце кода, но это мелочи. Главная трабла в том, что код не помогает и создание нового листа я вижу. Важный ньюанс, что происходит это все в офисе 2007. В 2003 не тестил, но это мой старый прием, он раньше по моему прокатывал легко. Кто что может подсказать. Очень не эстетично когда юзверь видит все твои секретики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 10:29 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
кот это код :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 10:30 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Ну и пример прикреплю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 10:36 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Может быть так? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 13:29 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
можно подойти кардинально, моргать будет, но что там творится в момент "моргания" будет скрыто:) в процедуре Worksheet_BeforeDoubleClick Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 13:29 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
vlthМожет быть так? Код: plaintext 1. 2. 3. 4. 5. 6. спасибо не помогло все также моргает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 18:37 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
sergeyvgможно подойти кардинально, моргать будет, но что там творится в момент "моргания" будет скрыто:) в процедуре Worksheet_BeforeDoubleClick Код: plaintext Код: plaintext спасибо, весело :) но не подойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 18:49 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
ShamanusvlthМожет быть так? Код: plaintext 1. 2. 3. 4. 5. 6. спасибо не помогло все также моргает Вариант: создать на время новый экземпляр Excel (objExcel.Visible=false). Подойдёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 19:57 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Странно, что у вас виден лист. У меня тоже в приложении создается скрытый лист, но я вешаю перед этим отключение обновления экрана, и ничего не видно. При удалении ставлю DisplayAlert=False. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 00:12 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
лично у меня метод doubleclick не срабатывает на листе, нужно вызывать из книги да и зачем тебе показывать тот лист, раз ты сам все делаешь? такчто отменяй действие и сам делай что хош... Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Target.Row = 29 And Target.Column < 4 Then Cancel = True 'твои штучки дрючки End If End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 03:07 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
да забыл в коде имя листа Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Лист4" Then If Target.Row = 29 And Target.Column < 4 Then Cancel = True 'твои штучки дрючки End If End If End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 03:14 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
vlthShamanusvlthМожет быть так? Код: plaintext 1. 2. 3. 4. 5. 6. спасибо не помогло все также моргает Вариант: создать на время новый экземпляр Excel (objExcel.Visible=false). Подойдёт? с этой темой незнаком сейчас погуглю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 09:24 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
ak787лично у меня метод doubleclick не срабатывает на листе, нужно вызывать из книги да и зачем тебе показывать тот лист, раз ты сам все делаешь? такчто отменяй действие и сам делай что хош... ak787да забыл в коде имя листа Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Лист4" Then If Target.Row = 29 And Target.Column < 4 Then Cancel = True 'твои штучки дрючки End If End If End Sub Эта схема работает, лист не создается. Просто тут косяк есть. Мои штуки дрюки это ключ к запросу по детализации сводной. Ну т.е. например в сводной есть дата-магазин. Дабл клик покажет все исходные данные для расчета величины на пересечении. Например все отделы этого магазина. Если дабл клик по сводной не даст листа детализации будет весьма сложно вытащить а какие именно отделы есть, чтобы создать ключ к запросу в базу. Т.е. придется придумывать залепы типа таблиц ассоциаций. Но Ваш вариант очень интересный, если ничего не получится наверно буду рыть сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 09:34 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
motorway, я думаю что косяк в версии офиса. В 2003 у меня тоже такой проблемы не было. А вообще попробуйте мой пример. Может быть он у Вас тоже не будет показывать лист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 09:35 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Shamanusс этой темой незнаком Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 10:27 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
vlthShamanusс этой темой незнаком Код: plaintext 1. 2. 3. 4. 5. 6. попытался раскурить..хмм Понял, что это такое, но не понял теперь как сделать открытие листа в этот новый эксель. Получается я текущим проектом не управляю а дабл клик создает лист в текущем объекте. Когда же я назначаю переменной текущий проект, то новые листы я тока сам могу создавать. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 11:49 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
В новой книге, открытой в новой копии Excel, уже будет сколько-то листов, поэтому создавать новый лист там не надо - достаточно получить ссылку на уже существующий: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 12:24 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
vlthВ новой книге, открытой в новой копии Excel, уже будет сколько-то листов, поэтому создавать новый лист там не надо - достаточно получить ссылку на уже существующий: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ну хорошо и как должна схема выглядеть. В какой момент времени мне нужно этот объект создавать чего то я не пойму? После 2йного нажатия по pivot-у мне нужно создать объект невидимый, экспортировать туда мой лист, сымитировать нажатие и создание листа там Прочесть на созданном там листе нужную мне инфу Убить весь объект со всем содержимым так чтоли? А если Pivot тяжелый и процедура экспорта затянется на 2-3 минуты? Или я что то неверно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:26 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Shamanus, да схема такая. А если Pivot тяжелый и процедура экспорта затянется на 2-3 минуты?А почему экспорт должен быть значительно дольше, чем в "родном" Excel? - ведь всё будет происходить точно так же. Нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:57 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
vlthShamanus, да схема такая. А если Pivot тяжелый и процедура экспорта затянется на 2-3 минуты?А почему экспорт должен быть значительно дольше, чем в "родном" Excel? - ведь всё будет происходить точно так же. Нет? это будет запасной план :) спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 15:22 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
небольшие замечания 1. кроме двойного клика есть еще пункт меню "Показать детали", его тоже надо будет обрабатывать 2. речь все время идет об обработке события "Workbook_NewSheet", но лист то к этому моменту уже засветился, мелькнул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 16:15 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
Shamanusak787лично у меня метод doubleclick не срабатывает на листе, нужно вызывать из книги да и зачем тебе показывать тот лист, раз ты сам все делаешь? такчто отменяй действие и сам делай что хош... ak787да забыл в коде имя листа Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Лист4" Then If Target.Row = 29 And Target.Column < 4 Then Cancel = True 'твои штучки дрючки End If End If End Sub ну если лист нужен ончень, то вот так Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Лист4" Then If Target.Row = 29 And Target.Column < 4 Then Cancel = True Application.ScreenUpdating = False Selection.ShowDetail = True 'твои штучки дрючки End If End If End Sub Эта схема работает, лист не создается. Просто тут косяк есть. Мои штуки дрюки это ключ к запросу по детализации сводной. Ну т.е. например в сводной есть дата-магазин. Дабл клик покажет все исходные данные для расчета величины на пересечении. Например все отделы этого магазина. Если дабл клик по сводной не даст листа детализации будет весьма сложно вытащить а какие именно отделы есть, чтобы создать ключ к запросу в базу. Т.е. придется придумывать залепы типа таблиц ассоциаций. Но Ваш вариант очень интересный, если ничего не получится наверно буду рыть сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:51 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
ak787Shamanusak787лично у меня метод doubleclick не срабатывает на листе, нужно вызывать из книги да и зачем тебе показывать тот лист, раз ты сам все делаешь? такчто отменяй действие и сам делай что хош... ak787да забыл в коде имя листа Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Лист4" Then If Target.Row = 29 And Target.Column < 4 Then Cancel = True 'твои штучки дрючки End If End If End Sub ну если лист нужен ончень, то вот так Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Лист4" Then If Target.Row = 29 And Target.Column < 4 Then Cancel = True Application.ScreenUpdating = False Selection.ShowDetail = True 'твои штучки дрючки End If End If End Sub Эта схема работает, лист не создается. Просто тут косяк есть. Мои штуки дрюки это ключ к запросу по детализации сводной. Ну т.е. например в сводной есть дата-магазин. Дабл клик покажет все исходные данные для расчета величины на пересечении. Например все отделы этого магазина. Если дабл клик по сводной не даст листа детализации будет весьма сложно вытащить а какие именно отделы есть, чтобы создать ключ к запросу в базу. Т.е. придется придумывать залепы типа таблиц ассоциаций. Но Ваш вариант очень интересный, если ничего не получится наверно буду рыть сюда. чтото я напутал с порядком сообщений... короче, вот.... ну если лист нужен ончень, то вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:53 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
забыл удаление листа добавить (метод New_Sheet не нужен) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 17:59 |
|
||
|
Скрытое создание листа
|
|||
|---|---|---|---|
|
#18+
ak787забыл удаление листа добавить (метод New_Sheet не нужен) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Прикольно решение. Спасибо. 5 баллов за идею :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 08:48 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36613611&tid=2159245]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 157ms |

| 0 / 0 |
