|
|
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Добрый день. В моей программе возникла сложность - результат непосредственно зависит от того сохраняет пользователь файл или нет. Можно ли перехватить это диалоговое окошко? Или вовсе отключить и прописать свое. Но тогда возникает вопрос как корректно сделать кнопку "отмена", чтобы программа не закрывалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 12:01 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, у книги есть событие Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 13:10 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Простите за глупый вопрос, а как мне ее использовать применительно к моему случаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 13:21 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, я думаю примерно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 13:22 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Shamanus, спасибо, понятнее стало. А чем принципиально отличается от этого напримеря(тренировался) авторPrivate Sub Auto_Close() perexvat End Sub Private Sub perexvat() Dim XL1 As Workbook Set XL1 = ActiveWorkbook Dim Sheet1 As Excel.Worksheet Set Sheet1 = XL1.Worksheets(1) Dim nResult As Integer nResult = MsgBox("сохранить изменения в книге", vbYesNoCancel, "Окно сообщения") 'MsgBox (CStr(nResult)) 6да 7нет 2отм If nResult = 6 Then XL1.Save XL1.Close Else XL1.Close Application.ActiveWorkbook.Close 0 Application.Quit End If End Sub в какой момент запускается ваш вариант и как на false отреагирует. У меня с английским не очень, в справку я не въехал( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 13:36 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, Private Sub Workbook_BeforeClose(Cancel As Boolean) (описание по ссылке) Workbook - рабочая книга Before - перед Close - закрыть (в контексте закрытие) Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Workbook - рабочая книга Before - перед Save - сохранить отличие от Вашего кода хотя бы в том, что мне неизвестно событие AutoClose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 13:46 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Shamanus, воркбук бифо и клоз я уж перевожу))) ладно спасибо, сейчас попробую разобраться, надеюсь мне это поможет. отпишу попозже что получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 13:58 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Что-то у меня вообще не срабатывает даже Код: plaintext 1. 2. 3. 4. Может что подключить нужно или я просто не понимаю чего-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 14:32 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, 1. в модуль книги надо 2. Проверьте макросы 3. нажмите сохранить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 14:50 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Shamanus, да, в книге все заработало. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ваш код работает одинакого что 1ый и 2ой по отдельности, что оба вместе. Чудеса) Впринципе почти подходит, только если нажать "нет" вылазет родной офисовский "сохранить изменения?". Можно отркбить его как-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 15:53 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Все правильно, и должны одинакого работать :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Написал кучу страшных слов около "нет", а все-равно не помогает от родной сохранялки избавиться( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 16:00 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
методом научного тыка определил, что в If даже не заходит Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 16:33 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, Application.DisplayAlerts=false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 16:39 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Использование Auto_Open и Auto_Close Вы можете создать Auto_Open и Auto_Close процедуры в любом программном модуле книги MS Excel либо надстройки. Процедура Auto_Open запустится, как только откроется файл, а Auto_Close - перед тем, как файл закроется. Эти процедуры очень полезны при выполнении задач установки или удаления, таких как создание своих панелей инструментов во время открытия файла и удаления их перед закрытием. Задачи такого типа находятся в модуле класса ThisWorkbook, используя события Workbook_Open и Before_Close. Однако используя Auto_Open и Auto_Close, Вы можете хранить все Ваши процедуры в одном модуле. Таким образом легче экспортировать код процедуры в другие проекты. Public Sub Auto_Open() MsgBox "Auto_Open procedure fired" End Sub Public Sub Auto_Close() MsgBox "Auto_Close procedure fired" End Примечание: Работает также в предыдущих версиях Excel. Взято тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 16:44 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
ShamanusApplication.DisplayAlerts=false присутствует эта строка в моем коде. А что толку если в if не заходит? в коде, который вы мне привели в качестве примера кстати тоже. Я не понемаю почему так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2010, 22:00 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Разобрался. Опять НЕ в книгу просто макрос отправил. А как закрыть не только книгу, а вместе с оболочкой? после сохранения закрывается все, а без сохранения только книга... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 11:50 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, application.quit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 12:31 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Shamanus, Спасибо очередной раз. Но так делать нельзя, косяк. Код: plaintext 1. То есть если открыта еще одна книга, закроется также без сохранений. То есть наверное нужно смотреть смотреть есть ли еще открытые книги и в зависимости от этого выполнять разные команды закрытия. погуглю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 13:27 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Работает? но не совсем так как нужно. Когда открыто несколько книг, он пытается закрыть и другие. При этом спрашивает. Я жму "отмена", другие не закрываются, но вместе с ними не закрывается и нужная. HELP! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 15:06 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, я Вам подсказал команду, которая как Вы просили авторзакрыть не только книгу, а вместе с оболочкой?подразумевая, что решение задачи дальше, Вы уже найдете. а если бы в сформулировали вопрос корректно, например: авторМне нужно написать код, который в зависимости от ситуации закрывал бы или книгу, или сам Excel. Если есть другие незакрытые книги, то только эту книгу, а когда открытая книга последняя, то и сам Excel то я бы написал код, а не команду код я думаю примерно такой Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 15:06 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOYРаботает? но не совсем так как нужно. Когда открыто несколько книг, он пытается закрыть и другие. Вы вообще каким крестиком пользуетесь? верхний закрывает приложение нижний текущую книгу Складывается впечатление, что Вы жмете именно верхний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 15:26 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
Shamanus Задавать грамотные вопросы тоже уметь нужно :) я то понимаю что если нажать внутренний крестик, то все нормально будет, но те для кого пишется приложение с компьютером на ВЫ и им невдомек куда тыкать. Да и удобнее в большой что уж. Кстати я опробовал просто книги без макросов, стандартная "сохранялка" работает точно также, как и моя. То есть закрывает все или ничего. Об этом Код: plaintext Только вот по пути домой меня мысль посетила. Если пользователь сделает изменения, затем нажмет на дискетку и сохранит файл, а при выходе уже ткнет "не сохранять" то мой макрос не сработает. То есть нужо еще контролировать сохранение походу работы с файлом это вот так проверяется? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2010, 20:28 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOY, Вам надо составить полное техзадание и тогда проблему Вы решите. Тот уровень знаний, который у Вас теперь уже есть, должен быть достаточным для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 09:41 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
3BEPOBOYТолько вот по пути домой меня мысль посетила. Если пользователь сделает изменения, затем нажмет на дискетку и сохранит файл, а при выходе уже ткнет "не сохранять" то мой макрос не сработает. То есть нужо еще контролировать сохранение походу работы с файлом это вот так проверяется? а если файл вообще не редактировался, то она по умолчанию тоже тру или Excel как-то по-другому хранит информацию о том делались изменеия или нет? проверяется сохранена ли книга или нет, через это свойство. Но оно, как Вы заметили true если книга только открыта Если Вам надо, чтобы полностью процессом сохранения управляли Вы, нужно перехватывать и отменять событие Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2010, 10:26 |
|
||
|
Перехват диалогового окна о сохранении файла
|
|||
|---|---|---|---|
|
#18+
ShamanusЕсли Вам надо, чтобы полностью процессом сохранения управляли Вы, нужно перехватывать и отменять событие хм... я пробовал что-то сделать через beforsave , но смог только отключить кнопку сохранения... Вообще немного поправив макрос используя Код: plaintext "ПОЧТИ" заключается в том, что когда книг много и закрытие через крестик с сохранением/без проходит через Код: plaintext P.S. Всех кто это читает [описание функции, выдергивающей год из даты] if yearFromDate=2010 msgbox "с наступающим!!!" else msgbox "с новым годом!!!" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2010, 19:12 |
|
||
|
|

start [/forum/topic.php?fid=61&gotonew=1&tid=2177298]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 490ms |

| 0 / 0 |
