Эксель (Excel). Как прикрутить к файлу диалоговое окно?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Эксель (Excel). Как прикрутить к файлу диалоговое окно?

Эксель (Excel). Как прикрутить к файлу диалоговое окно?

Ответ
Поиск в этой теме
Непрочитано 25.11.2009, 08:38 #1
Эксель (Excel). Как прикрутить к файлу диалоговое окно?
Mek
 
Изобретение металлических гаражей
 
Сибирь
Регистрация: 10.09.2004
Сообщений: 559

Всем привет.
Господа программисты, помогите пожалуйста.

Дано: Программа Эксель 2003. Некоторый файл. Расположен на сетевом ресурсе. Доступен разным пользователям.

Проблема: Человеческий фактор. Забывание закрывать файл сразу после завершения активной работы с ним. Во время работы одного из пользователей файл становится недоступным для других (доступно только чтение).

Требуется: Прикрутить к файлу Нечто. Чтобы выскакивало окошко и спрашивало: "Уважаемый пользователь! Вы уже трудитесь над этим файлом N минут. Продолжить? Закрыть?". Допустим чтобы каждые 30 минут такое окошко выскакивало. При выборе "Закрыть" при наличии изменений - стандартный запрос на сохранение. При отсутствии изменений - сразу закрывать.

Реально ли прикрутить это именно к файлу. Чтобы при открытии из любого места с любого компьютера появлялся такой запрос?

п.с. Языками программирования не владею..
__________________
В этом и состоит диалектика жизни
Просмотров: 10684
 
Непрочитано 25.11.2009, 08:54
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


По-моему, будет проще сделать совместный доступ на файл.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.11.2009, 09:19
#3
Mek

Изобретение металлических гаражей
 
Регистрация: 10.09.2004
Сибирь
Сообщений: 559


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
По-моему, будет проще сделать совместный доступ на файл.
От этого пришлось отказаться. В Общий файл нельзя вставлять гиперссылки.. и еще много чего там нельзя..
__________________
В этом и состоит диалектика жизни
Mek вне форума  
 
Непрочитано 25.11.2009, 13:59
#4
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Вставь такой макрос:
Цитата:
Public Sub Auto_open()
Dim a As Byte
y = ActiveWorkbook.Name
1: DoEvents
i = Time
j = Time
k = j - i
While k < 2.08333333333333E-02
DoEvents
k = j - i
j = Time
Wend
a = MsgBox("Документ открыт уже 30мин, хотите закрыть его?", vbYesNo)
If a = 7 Then GoTo 1 ' Новый отсчёт
If a = 6 Then Workbooks(y).Close ' Закрывает книгу
End Sub
Бывалые програмеры, простите уж самоучку за такой код.
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Автор темы   Непрочитано 25.11.2009, 14:53
#5
Mek

Изобретение металлических гаражей
 
Регистрация: 10.09.2004
Сибирь
Сообщений: 559


Цитата:
Сообщение от KronSerg Посмотреть сообщение
Вставь такой макрос...
Спасибо, попробую...

Минус в том что пользователь может выбирать включать ли макросы или нет..
__________________
В этом и состоит диалектика жизни
Mek вне форума  
 
Непрочитано 25.11.2009, 15:01
#6
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Создайте сертификат и подпишите макрос, окошко исчезнет.
Вот, немного доработал:
Код:
[Выделить все]
Public Sub Auto_open()
Dim a, r As Byte
Dim s, y As String
y = ActiveWorkbook.Name
r = 0
1: DoEvents
i = Time
j = Time
k = j - i
While k < 2.08333333333333E-02
DoEvents
k = j - i
j = Time
Wend
r = r + 1
s = "Документ " & y & " открыт уже " & Format(30 * r) & " мин, хотите закрыть его?"
a = MsgBox(s, vbYesNo)
If a = 7 Then GoTo 1 ' Новый отсчёт
If a = 6 Then Workbooks(y).Close ' Закрывает книгу
End Sub
__________________
Нерешаемых проблем не бывает.

Последний раз редактировалось KronSerg, 27.11.2009 в 12:43.
KronSerg вне форума  
 
Автор темы   Непрочитано 26.11.2009, 07:22
#7
Mek

Изобретение металлических гаражей
 
Регистрация: 10.09.2004
Сибирь
Сообщений: 559


Цитата:
Сообщение от KronSerg Посмотреть сообщение
Создайте сертификат и подпишите макрос, окошко исчезнет.
Ок. Потестируем...

Сертификат создал, макрос подписал. На моем компьютере перестало блокировать макрос. Это плюс..
Открыл файл, через полчаса замигало окошко. Это плюс.
На запрос ответил "Нет". Файл остался открытым. Это плюс.
При ответе "Да" появился стандартный запрос на сохранение изменений. Ответил да, файл закрылся. Это плюс.

Минусы:
1. Невозможность открытия других файлов эксель. Тупо не открываются. (критично)
2. Перестали работать гиперссылки на документы (pdf), хотя гиперссылки выглядят как надо. Гиперссылка на переход к другому листу в этом же файле работает. (критично)
3. Если открыты другие документы эксель и еще открыть файл с макросом, то переход от одного файла к другому возможен только через меню Окно. Переключение по "Alt +Tab" не работает. Щелчки по свернутым внизу экрана ярлычкам не работают. (критично)
4. Не отображаются примечания. Отображаются только их красные треугольнички. (критично)
5. Не появляется окошко, предупреждающее о включенной защите защищенных ячеек при попытке их редактирования. Защищенные ячейки тупо не редактируются, ничего не происходит. (не критично)
6. Не работает поиcк внутри файла. Окошко поиска открывается (Ctrl+F) но ничего не ищет. (критично)
__________________
В этом и состоит диалектика жизни

Последний раз редактировалось Mek, 26.11.2009 в 07:56.
Mek вне форума  
 
Непрочитано 26.11.2009, 14:28
#8
Mikha

Highway Design
 
Регистрация: 16.09.2007
Tver
Сообщений: 27


>>KronSerg
Код:
[Выделить все]
While k < 2.08333333333333E-02
DoEvents
k = j - i
j = Time
Wend
Данный цикл загружает процессор на 100%
Выражение DoEvents в данном случае не спасет
Возможное решение проблемы Scheduling Events With OnTime And Windows Timers
Mikha вне форума  
 
Непрочитано 26.11.2009, 15:57 Спасибо
#9
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Mikha, спасибо, вот так должно заработать:
Код:
[Выделить все]
Public y As String
Public r As Byte
Public Const cRunIntervalSeconds = 1800 'Время в секундах
Public Sub Auto_open()
y = ActiveWorkbook.Name
Call qwer
End Sub

Sub qwer()
Dim RunWhen As Double
Const cRunWhat = "qwerty"
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
        Schedule:=True

End Sub
Sub qwerty()
Dim a As Byte
Dim s As String
a = 7
r = r + 1
s = "Документ " & y & " открыт уже " & Format(cRunIntervalSeconds * r/60) & " мин, хотите закрыть его?"
a = MsgBox(s, vbYesNo)
If a = 7 Then Call qwer
If a = 6 Then Workbooks(y).Close
End Sub
__________________
Нерешаемых проблем не бывает.

Последний раз редактировалось Кулик Алексей aka kpblc, 26.11.2009 в 23:39. Причина: Исправил косяк
KronSerg вне форума  
 
Автор темы   Непрочитано 27.11.2009, 05:07
#10
Mek

Изобретение металлических гаражей
 
Регистрация: 10.09.2004
Сибирь
Сообщений: 559


Цитата:
Последний раз редактировалось Кулик Алексей aka kpblc, Сегодня в 02:39. Причина: Исправил косяк
О каком косяке речь? Вчера вечером создал макрос с этим кодом. ("Косяк" был исправлен позже) Вроде заработало все как надо..
__________________
В этом и состоит диалектика жизни
Mek вне форума  
 
Непрочитано 27.11.2009, 08:11
#11
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Mek, я тэги менял с quote на code.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.11.2009, 12:45
#12
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


На всякий случай сравни коды, я тоже правил, косяк был в том, что закрывался в данный момент открытый файл а не носитель макроса.
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Автор темы   Непрочитано 27.11.2009, 13:04
#13
Mek

Изобретение металлических гаражей
 
Регистрация: 10.09.2004
Сибирь
Сообщений: 559


Цитата:
Сообщение от KronSerg Посмотреть сообщение
На всякий случай сравни коды, я тоже правил, косяк был в том, что закрывался в данный момент открытый файл а не носитель макроса.
Макрос у меня в редакторе выглядит иначе, чем выглядит код в сообщении №9. Картинку прилагаю. Отличия начинаются с пятой строки..
Вроде работает.. Потестю еще..
Миниатюры
Нажмите на изображение для увеличения
Название: Содержимое макроса.jpg
Просмотров: 186
Размер:	38.6 Кб
ID:	29700  
__________________
В этом и состоит диалектика жизни
Mek вне форума  
 
Непрочитано 27.11.2009, 13:19
#14
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Поменяй макрос, если работать в другой книге и ответить "Нет" выскочившему окошку, в следующий раз этот макрос предложит закрыть книгу в которой был дан ответ, а не ту из которой работает.
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Автор темы   Непрочитано 02.12.2009, 14:56
#15
Mek

Изобретение металлических гаражей
 
Регистрация: 10.09.2004
Сибирь
Сообщений: 559


Цитата:
Сообщение от KronSerg Посмотреть сообщение
Поменяй макрос, если работать в другой книге и ответить "Нет" выскочившему окошку, в следующий раз этот макрос предложит закрыть книгу в которой был дан ответ, а не ту из которой работает.
Поменял. Всё работает. Фантастика!

Готов перечислить скромную сумму на счет мобильного телефона автору макроса. Номер мобилы, город и оператора сообщите в пагер...
__________________
В этом и состоит диалектика жизни
Mek вне форума  
 
Непрочитано 04.12.2009, 11:43
#16
Дерия


 
Регистрация: 04.12.2009
Сообщений: 4


Подскажите пожалуйста. Стала использовать этот код. Вылетает ошибка "Не удается выполнить макрос С:......\Книга1.xls'!qwerty. Возможно этот макрос отсутствует в текущей книги либо все макросы отключены."
Получается он не видит третью процедуру. Не подскажите в чем проблема может быть?
Дерия вне форума  
 
Непрочитано 04.12.2009, 11:46
#17
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Макрос подписала, настройки безопасности макросов проверила?
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 04.12.2009, 11:59
#18
Дерия


 
Регистрация: 04.12.2009
Сообщений: 4


Да. Я даже попробовала просто включить все макросы. Все равно не видит. Причем первую же процу запускает, вторую через OnTime нет.
Дерия вне форума  
 
Непрочитано 04.12.2009, 12:02
#19
KronSerg

Вода - моя работа
 
Регистрация: 10.11.2009
Санкт-Петербург
Сообщений: 3,638


Цитата:
вторую через OnTime нет
В смысле ждёт 1800 сек и выдаёт ошибку?
__________________
Нерешаемых проблем не бывает.
KronSerg вне форума  
 
Непрочитано 04.12.2009, 12:03
#20
Дерия


 
Регистрация: 04.12.2009
Сообщений: 4


Аха. Только я уменьшила до 10 секунд
Дерия вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Прочее. Программное обеспечение > Эксель (Excel). Как прикрутить к файлу диалоговое окно?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как организовать автоматическую передачу площади штриховки/полилинии в Excel Zuzel AutoCAD 10 08.10.2010 14:53
Как вызвать окно AutoStack Properties в Mtext Sel AutoCAD 3 22.11.2005 17:26
Как в Автокаде в VBA указать окно просмотра (Window) Саша AutoCAD 1 06.09.2004 21:40
Диалоговое окно в ACAD 2004... Pavel Программирование 4 16.04.2004 11:03
как видовое окно viewport сделпть круглым? zodchy2000@mail. AutoCAD 1 10.04.2004 20:20