SemenTVS 0 / 0 / 0 Регистрация: 27.11.2017 Сообщений: 22 |
||||
1 |
||||
Excel Запуск пользовательской формы при открытии файла19.07.2018, 15:30. Показов 27339. Ответов 7 Метки нет (Все метки)
Пока нашел только такой способ
Но при запуске .xlsm видно как открывается книга, потом скрывается и открывается уже сама форма
0 |
yutrans 140 / 123 / 50 Регистрация: 10.11.2011 Сообщений: 620 |
||||
19.07.2018, 17:11 |
2 |
|||
Может так?
1 |
SemenTVS 0 / 0 / 0 Регистрация: 27.11.2017 Сообщений: 22 |
||||
19.07.2018, 18:02 [ТС] |
3 |
|||
Нет, все также. Добавлено через 32 минуты
вот такая конструкция скрывает, изменяет листы в книге, но при этом окно программы остаётся на месте Или все эти команды я пишу в «этой книге», поэтому имеется задержка, как я понимаю, А имею ли я возможность написать макрос для самого экселя или что там по иерархии выше книги стоит?
0 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
19.07.2018, 18:39 |
4 |
поэтому имеется задержка, как я понимаю Скорее это не задержка, а последовательность действий винда. Когда вы кликаете на файл, то вызывается его приложение, при этом файл ещё не открывается и Open ещё не запускается. После открытия окна приложения начинается обработка событий файла, а до этого времени окно приложения будет видно. А стоит ли из-за секунды-двух убиваться? Добавлено через 5 минут
1 |
0 / 0 / 0 Регистрация: 27.11.2017 Сообщений: 22 |
|
19.07.2018, 19:04 [ТС] |
5 |
Можно и не прятать вовсе и секунда не играет роли. Заморозить экран самого виндовса? это мб выход и хороший, но сомневаюсь что я пойму как это делается, тут проблемы программно создавать формы в си, куда там до владения прочих возможностей.
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
19.07.2018, 21:24 |
6 |
а вот перед запуском приложения заморозить экран не исключено, что возможно, но я этого не знаю Функция LockWindowUpdate (WinAPI) может, но кто и откуда её будет вызывать ?
1 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
20.07.2018, 06:17 |
7 |
pashulka, ну так нарисовать скрипт, отрубаем экран, вызываем эксель с загрузкой нужного файла, как параметра. Только после окончания работы приложения не забыть восстановить изменение экрана. И опять же вопрос
А стоит ли из-за секунды-двух убиваться?
1 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
20.07.2018, 13:50 |
8 |
Burk, тоже думаю, что не стоит, тем более что из .vbs вызов winapi напрямую невозможен. Можно, конечно, поиграться с set xl = createobject(«excel.application») но …
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
20.07.2018, 13:50 |
8 |
asesja Пользователь Сообщений: 320 |
#1 24.02.2022 23:38:32 Здравствуйте.
Запись ThisWorkbook.Windows(1).Visible = False оставляет пустое окно Excel. Exel остается видимым, а нужно действие такое же как при исполнении кода Application.Visible = False, только для данного файла. т.е. для простого пользователя при двойном клике должна открыться только форма. Если на момент запуска открыты другие файлы Excel, они не должны быть затронуты.. Если данный файл запускается первым, то тоже должна быть видна только форма, без пустого Excel. Изменено: asesja — 25.02.2022 22:21:18 |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#2 25.02.2022 09:45:17
так Вы при закрытии формы возвращайте видимость окна и все будет ОК. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Александр Моторин Пользователь Сообщений: 958 |
#3 25.02.2022 09:45:56 может так?
|
||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#4 25.02.2022 10:15:41 1. исправьте:
2. Скройте книгу, Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
asesja Пользователь Сообщений: 320 |
#5 25.02.2022 11:52:53
Подскажите, как? При каком событии формы? Если файл будет открываться первым, то пустой Excel остается видимым, а нужна только форма. Дописал уточнение. Изменено: asesja — 25.02.2022 11:59:53 |
||
asesja Пользователь Сообщений: 320 |
#6 25.02.2022 11:53:57
Ничего не меняется. Изменено: asesja — 25.02.2022 12:00:57 |
||
asesja Пользователь Сообщений: 320 |
#7 25.02.2022 11:58:19
Спасибо. Думал что уже получилось то что хотел, но если файл запускать первым, то на фоне все равно фигурирует пустое окно Excel, а нужно чтобы была видна только форма. Дописал уточнение. Изменено: asesja — 25.02.2022 12:01:33 |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#8 25.02.2022 12:02:23
так а как Вы хотели-то? Если открыта только одна книга, а Вы и ту скрываете. Да, будет пустое приложение. Определитесь для начала, что при каких условиях должно быть видимым и тогда можно будет решение найти.
а если мы эту книгу открыли не первой? Тогда что?
событие закрытия формы. Есть там такое QueryClose Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
asesja Пользователь Сообщений: 320 |
#9 25.02.2022 12:46:54
Дмитрий, дописал уточнение в первом сообщении. |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#10 25.02.2022 12:51:29
засуньте форму в нвдстройку и подключите к Excel — теперь форма всегда будет доступна, никакие дополнительные книги не будут открываться и это очень легко и правильно Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
asesja Пользователь Сообщений: 320 |
#11 25.02.2022 13:11:20
В надстройку не нужно. Нужный мне макрос должен находится в фале и форма должна появляться при его запуске (как будто запускаешь exe в котором при запуске выводится форма) |
||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#12 25.02.2022 13:17:41 код в сообщении 4 замените на такой:
Изменено: Ігор Гончаренко — 25.02.2022 13:22:34 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#13 25.02.2022 13:27:06
это никак не вяжется с этим
Но тем не менее, сделать можно так:
осталось понять, что именно делать при закрытии формы — закрывать так же файл или нет. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
asesja Пользователь Сообщений: 320 |
#14 25.02.2022 13:35:30
Не работает. Если имеются открытые файлы excel, то при запуске просто моргает окно и закрывается. Если открывать файл первым, то запускается пустой Excel без формы. |
||
asesja Пользователь Сообщений: 320 |
#15 25.02.2022 13:37:36
Дмитрий, да закрывать. Правильно спросили. |
||
RAN Пользователь Сообщений: 7091 |
#16 25.02.2022 13:47:16
|
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#17 25.02.2022 13:50:52
Т.е. сами по образцу это сделать не сможете, что ли?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
asesja Пользователь Сообщений: 320 |
#18 25.02.2022 13:51:46
Дмитрий, не работает. Форма открывается вместе с книгой. |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#19 25.02.2022 13:54:07
с какой именно? Куда и на какое событие вставляли код? Чего от кода ожидаете? Изменено: Дмитрий(The_Prist) Щербаков — 25.02.2022 13:55:30 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
asesja Пользователь Сообщений: 320 |
#20 25.02.2022 14:01:10
Ран, почти то, что нужно, но если открыть первым файл с макросом, то затем любой следующий открытый файл Excel делает видимым Excel у которого форма. |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#21 25.02.2022 14:03:34
так в условии не было ни слова о том, что надо отслеживать еще и последующие открываемые файлы! Вы сами понимаете, что одним кодом это действие не отследить? Надо писать обработку класса на отслеживание событий приложения, чтобы проверять — если форма открыта, то одно, если нет, то другое… Изменено: Дмитрий(The_Prist) Щербаков — 25.02.2022 14:12:57 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
От вам не лень, ей богу Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
asesja Пользователь Сообщений: 320 |
#23 25.02.2022 14:13:56
Дмитрий, извините, но просто моргает и закрывается. Наверное буду решать вопрос как-то по другому, если нельзя сделать так, как я спросил. Изменено: asesja — 25.02.2022 14:16:53 |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#24 25.02.2022 14:19:01
не знаю, что у Вас там происходит. Информации мало — нужно точно знать, установлено ли свойство формы ShowModal в true. Если нет — то так и будет моргать и закрываться, т.к. в этом случае форма запускается и не происходит ожидания её закрытия и код идет дальше — следовательно книга просто закрывается. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
asesja Пользователь Сообщений: 320 |
#25 25.02.2022 14:19:55
Дмитрий, ShowModal = False. Если true, то работа с другими файлами не возможна, как вы и написали. Изменено: asesja — 25.02.2022 14:24:45 |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#26 25.02.2022 14:21:09
это вопрос о чем? Краткость не всегда сестра таланта. Я вроде выше все расписал. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
пора автору дать возможность помедитировать, подумать над задачей…. Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
asesja Пользователь Сообщений: 320 |
#28 25.02.2022 14:25:24
Дмитрий, исправил. |
||
Дмитрий(The_Prist) Щербаков Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#29 25.02.2022 14:31:18
ну так это у Вас проблемы с базовым пониманием принципов работы с формами. Я уже выше пояснил — если работаете с формой в немодальном режиме — то вот эти строки:
выполняются сразу без остановок.
и продумывать логику действий исходя из всех условий(открытие файлов в процессе работы с формой и поведение приложения и формы в этих случаях). Изменено: Дмитрий(The_Prist) Щербаков — 25.02.2022 14:32:06 Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
asesja Пользователь Сообщений: 320 |
#30 25.02.2022 14:47:19 Спасибо, всем, кто отозвался. Все правы, что задача сформулирована не полностью. Формулировка после получения и апробации предложенных вариантов: Изменено: asesja — 25.02.2022 22:33:11 |
Формулировка задачи:
Имеется книга Excel, в ней создана форма для ввода данных. Как сделать, при открытии ДАННОЙ книги автоматически запускалась форма?
Код к задаче: «Автоматический запуск формы при открытии файла в Excel»
textual
<font color="blue">Private</font> <font color="blue">Sub</font> Workbook_Open() UserForm1.Show <font color="blue">End</font> <font color="blue">Sub</font>
Полезно ли:
8 голосов , оценка 4.000 из 5
Обновлено: 15.04.2023
Доброго времени суток коллеги!
Прошу подсказать как реализовать такую задачу:
есть файл который постоянно модернизируется по функционалу, этот файл используют много людей с разных компьютеров.
Необходимо создать окно уведомлений которое бы могло появляться раз у каждого пользователя при входе в файл со своего ПК и каждый раз после изменения текста в этом окне он каждый раз появлялся у каждого входящего в этот файлик и давал возможность ознакомится с изменениями. Но надо что бы он один раз появлялся после внесения изменений в текстовку этого файла (это окно с уведомлением)
Доброго времени суток коллеги!
Прошу подсказать как реализовать такую задачу:
есть файл который постоянно модернизируется по функционалу, этот файл используют много людей с разных компьютеров.
Необходимо создать окно уведомлений которое бы могло появляться раз у каждого пользователя при входе в файл со своего ПК и каждый раз после изменения текста в этом окне он каждый раз появлялся у каждого входящего в этот файлик и давал возможность ознакомится с изменениями. Но надо что бы он один раз появлялся после внесения изменений в текстовку этого файла (это окно с уведомлением) Gameower
хорошо а как реализовать это? через какую функцию ? Автор — Gameower
Дата добавления — 01.11.2016 в 12:41
если закрыть окно или нажать отмену, следующий открывший файл увидит такое же окно, если изменить текст и нажать ок, следующий увидит этот текст
вместо inputbox, для больших текстов правильнее форму с кнопками сделать.
если закрыть окно или нажать отмену, следующий открывший файл увидит такое же окно, если изменить текст и нажать ок, следующий увидит этот текст
вместо inputbox, для больших текстов правильнее форму с кнопками сделать. K-SerJC
Благими намерениями выстелена дорога в АД.
если закрыть окно или нажать отмену, следующий открывший файл увидит такое же окно, если изменить текст и нажать ок, следующий увидит этот текст
вместо inputbox, для больших текстов правильнее форму с кнопками сделать. Автор — K-SerJC
Дата добавления — 01.11.2016 в 12:56
K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать? и желательно нижнюю строку где можно писать ее убрать совсем окно несет информативный характер только
K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать? и желательно нижнюю строку где можно писать ее убрать совсем окно несет информативный характер только Gameower
K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать?
K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать?
K-SerJC, хороший вариант, один момент, нужно что бы это окно выпадало один раз после обновления в нем написанного у каждого нового посетителя файла, и повторное появление будет только после обновления содержимого в этом окне, это возможно простыми командами сделать?
K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.
K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д. Gameower
K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.
если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))
K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.
если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))
K-SerJC, а вы могли бы дать пример как это сделать? и приписать коменты куда вставить пользователей и т.д.
если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))
прикольно, мысль была похожая, только через username
у нас по сети можно с разных компов под своей учеткой заходить
прикольно, мысль была похожая, только через username
у нас по сети можно с разных компов под своей учеткой заходить K-SerJC
прикольно, мысль была похожая, только через username
у нас по сети можно с разных компов под своей учеткой заходить Автор — K-SerJC
Дата добавления — 01.11.2016 в 14:10
Так вместо Серийника возьмите за основу что вам надо и все. Там в первых строках кода переменная S. В нее и возьмите юзернэйм ))) Удачи
Так вместо Серийника возьмите за основу что вам надо и все. Там в первых строках кода переменная S. В нее и возьмите юзернэйм ))) Удачи devilkurs
если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))
вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??
если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))
вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать?? Gameower
если не очень срочно сделаю, надо время подумать, а тут еще работой пригрузили :-))
вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать?? Автор — Gameower
Дата добавления — 02.11.2016 в 04:28
момнет такой, необходимо не ту инфо выводить,а другую ту которую я бы мог сам вписывать типа версия файла такая то и внес по функционалу такие то изменения и т.д.
момнет такой, необходимо не ту инфо выводить,а другую ту которую я бы мог сам вписывать типа версия файла такая то и внес по функционалу такие то изменения и т.д. Gameower
момнет такой, необходимо не ту инфо выводить,а другую ту которую я бы мог сам вписывать типа версия файла такая то и внес по функционалу такие то изменения и т.д. Автор — Gameower
Дата добавления — 02.11.2016 в 04:43
вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??
вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??
вообще есть список юзеров которые будут часто использовать, но есть и новые пользователе которые могут заходить. возможно ли через название ПК в сети это сделать??
много вариантов. Автор — K-SerJC
Дата добавления — 02.11.2016 в 07:37
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open()
If ActiveWorkbook.Sheets(«secr»).Visible <> 0 Then ActiveWorkbook.Sheets(«secr»).Visible = 0
Message (CreateObject(«Scripting.FileSystemObject»).GetDrive(«C»).SerialNumber)
End Sub
Private Sub Message(snDrive As String)
Dim pUz As Integer, txt As String
If ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value = «» Then AddDrive (snDrive): Moder: Exit Sub
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value Then Moder: Exit Sub
pUz = FindUz(snDrive)
If pUz = 0 Then AddDrive (snDrive): Uzver: Exit Sub
txt = ActiveWorkbook.Sheets(«secr»).Cells(1, 1).Value
If ActiveWorkbook.Sheets(«secr»).Cells(pUz, 2).Value = txt Then Exit Sub Else: UpdateDriveRec pUz, txt: Uzver
End Sub
Private Sub Moder()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Отредактировал!»
frmMessage.Label1.Visible = False
frmMessage.Show
End Sub
Private Sub Uzver()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Прочитал!»
frmMessage.Label1.Visible = True
frmMessage.Show
End Sub
Private Sub AddDrive(snDrive As String)
Dim t As Integer
t = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
ActiveWorkbook.Sheets(«secr»).Cells(t, 1).Value = snDrive
ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value = t + 1
End Sub
Private Sub UpdateDriveRec(poz As Integer, txt As String)
ActiveWorkbook.Sheets(«secr»).Cells(poz, 2).Value = txt
End Sub
Private Function FindUz(snDrive As String) As Integer
Dim st As Integer, sp As Integer, à As Integer
FindUz = 0
st = ActiveWorkbook.Sheets(«secr»).Cells(2, 1).Value
sp = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
For f = st To sp
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(f, 1).Value Then FindUz = f: Exit Function
Next f
End Function
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open()
If ActiveWorkbook.Sheets(«secr»).Visible <> 0 Then ActiveWorkbook.Sheets(«secr»).Visible = 0
Message (CreateObject(«Scripting.FileSystemObject»).GetDrive(«C»).SerialNumber)
End Sub
Private Sub Message(snDrive As String)
Dim pUz As Integer, txt As String
If ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value = «» Then AddDrive (snDrive): Moder: Exit Sub
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value Then Moder: Exit Sub
pUz = FindUz(snDrive)
If pUz = 0 Then AddDrive (snDrive): Uzver: Exit Sub
txt = ActiveWorkbook.Sheets(«secr»).Cells(1, 1).Value
If ActiveWorkbook.Sheets(«secr»).Cells(pUz, 2).Value = txt Then Exit Sub Else: UpdateDriveRec pUz, txt: Uzver
End Sub
Private Sub Moder()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Отредактировал!»
frmMessage.Label1.Visible = False
frmMessage.Show
End Sub
Private Sub Uzver()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Прочитал!»
frmMessage.Label1.Visible = True
frmMessage.Show
End Sub
Private Sub AddDrive(snDrive As String)
Dim t As Integer
t = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
ActiveWorkbook.Sheets(«secr»).Cells(t, 1).Value = snDrive
ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value = t + 1
End Sub
Private Sub UpdateDriveRec(poz As Integer, txt As String)
ActiveWorkbook.Sheets(«secr»).Cells(poz, 2).Value = txt
End Sub
Private Function FindUz(snDrive As String) As Integer
Dim st As Integer, sp As Integer, à As Integer
FindUz = 0
st = ActiveWorkbook.Sheets(«secr»).Cells(2, 1).Value
sp = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
For f = st To sp
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(f, 1).Value Then FindUz = f: Exit Function
Next f
End Function
Благими намерениями выстелена дорога в АД.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open()
If ActiveWorkbook.Sheets(«secr»).Visible <> 0 Then ActiveWorkbook.Sheets(«secr»).Visible = 0
Message (CreateObject(«Scripting.FileSystemObject»).GetDrive(«C»).SerialNumber)
End Sub
Private Sub Message(snDrive As String)
Dim pUz As Integer, txt As String
If ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value = «» Then AddDrive (snDrive): Moder: Exit Sub
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(3, 1).Value Then Moder: Exit Sub
pUz = FindUz(snDrive)
If pUz = 0 Then AddDrive (snDrive): Uzver: Exit Sub
txt = ActiveWorkbook.Sheets(«secr»).Cells(1, 1).Value
If ActiveWorkbook.Sheets(«secr»).Cells(pUz, 2).Value = txt Then Exit Sub Else: UpdateDriveRec pUz, txt: Uzver
End Sub
Private Sub Moder()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Отредактировал!»
frmMessage.Label1.Visible = False
frmMessage.Show
End Sub
Private Sub Uzver()
frmMessage.Hide
frmMessage.TextBox1.Enabled = False
frmMessage.cmbOK.Caption = «Прочитал!»
frmMessage.Label1.Visible = True
frmMessage.Show
End Sub
Private Sub AddDrive(snDrive As String)
Dim t As Integer
t = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
ActiveWorkbook.Sheets(«secr»).Cells(t, 1).Value = snDrive
ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value = t + 1
End Sub
Private Sub UpdateDriveRec(poz As Integer, txt As String)
ActiveWorkbook.Sheets(«secr»).Cells(poz, 2).Value = txt
End Sub
Private Function FindUz(snDrive As String) As Integer
Dim st As Integer, sp As Integer, à As Integer
FindUz = 0
st = ActiveWorkbook.Sheets(«secr»).Cells(2, 1).Value
sp = ActiveWorkbook.Sheets(«secr»).Cells(2, 2).Value
For f = st To sp
If snDrive = ActiveWorkbook.Sheets(«secr»).Cells(f, 1).Value Then FindUz = f: Exit Function
Next f
End Function
Этот прием позволит Вам выводить на экран окно-заставку при открытии любой заданной книги в Excel.
Заставка появляется сразу после открытия файла и автоматически исчезает через несколько секунд.
Шаг 1. Создаем экранную форму
Откройте редактор Visual Basic — в старых версиях Excel это можно сделать через меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor) , а в новых кнопкой Visual Basic на вкладке Разработчик (Developer) и создайте новую форму, используя команду меню Insert — UserForm. Появится пустая серая оконная форма будущей заставки. Добавим на нее изображение при помощи панели инструментов Toolbox (если у вас ее не видно, то зайдите в меню View — Toolbox):
Возможно, придется немного изменить размер формы, чтобы изображение уместилось полностью. Чтобы написать на форме текст, можно использовать элемент управления Label с панели Toolbox.
Ну, и наконец, выделив предварительно всю форму, можно задать текст в строке заголовка, используя свойство Caption в панели Properties:
В итоге у вас должно получиться нечто подобное:
Шаг 2. Добавляем управляющий код
Щелкните правой кнопкой мыши по форме и выберите View Code. В открывшийся модуль формы добавьте такой код:
Откройте модуль ЭтаКнига в левом верхнем углу (если ее не видно — отобразите соответствующее окно через меню View — Project Explorer) и добавьте в него следующий код:
И, наконец, вставьте обычный модуль (Insert — Module) и скопируйте туда это:
Все. Можно закрывать редактор Visual Basic, сохранять файл и пробовать закрыть-открыть книгу.
Как это работает?
При открытии книги Excel выполняет процедуру Workbook_Open из модуля ЭтаКнига. Эта процедура отображает на экране нашу форму-заставку. При отображении формы запускается процедура UserForm_Activate, которая с задержкой в 5 секунд запускает макрос KillTheForm, который убирает форму с экрана.
Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!
1. Держать Alt + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.
2. В Microsoft Visual Basic для приложений окно, дважды щелкните Эта рабочая тетрадь из Проект-VBAProject панели, затем скопируйте и вставьте приведенный ниже код VBA в Модули окно, см. снимок экрана:
Внимание: Если Проект-VBAProject панель скрыта, щелкните Вид > Обозреватель проекта для его отображения.
3. Затем закройте окно кода и сохраните эту книгу как Excel Macro-Enabled Workbook формат, пожалуйста, нажмите Файл > Сохранить какИ в Сохранить как окно, выберите Excel Macro-Enabled Workbook из Сохранить как список, см. снимок экрана:
4. Теперь при первом открытии этого файла вверху таблицы отображается предупреждение системы безопасности, щелкните Включить контент кнопку для активации кода VBA, см. снимок экрана:
Ноты:
Автоматически открывать определенные книги при следующем запуске Excel
После установки Kutools for Excel, выполните следующие действия:
1. Открывайте книги, которые вы хотите открыть вместе в следующий раз автоматически.
2. Затем нажмите Предприятие > Workbook > Автоматически открывать эту книгу в следующий раз, см. снимок экрана:
3. В Автоматически открывать эту книгу в следующий раз диалоговое окно, щелкните Выбрать все чтобы проверить все книги, которые вы хотите автоматически открывать в следующий раз при запуске файла Excel, затем нажмите Ok для выхода из диалога см. снимок экрана:
4. И теперь, когда вы запускаете файл Excel, все выбранные вами книги открываются одновременно.
Внимание: Чтобы отменить эту операцию, вам просто нужно отменить выбор всех книг или удалить или очистить книги в Автоматически открывать эту книгу в следующий раз диалоговое окно.
Репутация: нет
Всего: нет
Репутация: 13
Всего: 23
Цитата(Rustamb @ 30.12.2009, 12:18 ) |
Сейчас пишу базу данных |
“. Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
Репутация: нет
Всего: нет
1. Публиковать ссылки на вскрытые компоненты
2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
- Несанкционированная реклама на форуме запрещена
- Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль «Помогите!» таковым не является.
- Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
- Оставляйте свои записи в «Книге отзывов о работе администрации»
- А вот тут лежит FAQ нашего подраздела
Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.
[ Время генерации скрипта: 0.1258 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Читайте также:
- Долг в жизни людей разных профессий сообщение
- Сообщение о профессии парфюмер
- Сообщение об одной из религий востока конфуцианство буддизм индуизм синтоизм
- Музей в орле тургенева сообщение
- Сообщение фразеологизмы о языке
Сегодня один человек задал вопрос на канале YouTube:»Подскажите, пожалуйста, возможно ли сделать так, чтобы пользовательская форма открывалась, только когда открыт определенный Лист Excel???»
КОНЕЧНО ВОЗМОЖНО!
Приведу реализацию кода для данной задачки.
Ведь здесь всего лишь нужно сравнить активен ли необходимый нам лист или не активен, и если нужный нам лист активен, тогда и показываем форму.
'//Процедура выводит сообщение, только если... '//...активным листом является лист "МойЛист" Sub TestProc() Dim mySheet As Worksheet '//эта переменная будет содержать ссылку на наш лист(объект) Set mySheet = ThisWorkbook.Worksheets("МойЛист") '//инициализируем переменную ссылкой на наш объект-лист If (mySheet Is ThisWorkbook.ActiveSheet) Then MsgBox "Hello World" '//если наш лист является активным листом, тогда показываем форму End Sub