powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Application.OnTime
15 сообщений из 15, страница 1 из 1
Application.OnTime
    #36814831
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как правильно использовать Application.OnTime в проекте VB6.
Для примера в новом проекте есть форма с одной кнопкой и кодом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()
Application.OnTime Now + TimeValue("00:00:05"), "MySub"
End Sub

Private Sub MySub()
MsgBox "Ок"
End Sub

при нажатии на кнопку через 5 секунд появляется ошибка:

P.S. Библиотека Excel подключена.
...
Рейтинг: 0 / 0
Application.OnTime
    #36814873
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan B.,


Попытался вышеуказанный код впихнуть в VB 5.0 (т.к. VB 6.0 у меня нет), так ему строчка Application.OnTime вообще не понравилась, наверно надо библиотеку подключать какую-то.

Потом увидел что на вашем скрине окошко у Excel.

Нарисовал я в Excel 2003 форму с кнопкой и вышеуказанный код прикрепил, там всё работает, через 5 секунд после нажатия кнопки выходит сообщение "Ok".
...
Рейтинг: 0 / 0
Application.OnTime
    #36814875
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan B.,

В VB6 нет объекта Application.

А если уж вы подключили референс на эксель, то надо загружать эксель, да и макрос должен быть тогда в экселе.
...
Рейтинг: 0 / 0
Application.OnTime
    #36814958
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProRuslan B.,

В VB6 нет объекта Application.

А если уж вы подключили референс на эксель, то надо загружать эксель, да и макрос должен быть тогда в экселе.
Да, но время то он отсчитывает как положено, а вот нужную функцию запустить не хочет.
Значит без загрузки Excel не получится?
...
Рейтинг: 0 / 0
Application.OnTime
    #36815009
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ruslan B.,
"MySub" должен быть в Экселе.
...
Рейтинг: 0 / 0
Application.OnTime
    #36815022
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan B.Значит без загрузки Excel не получится?
Первое обращение к Application неявно запускает Эксель.
Это вы можете скорее всего почувствовать по торможению.
Обратите также внимание на заголовок сообщения об ошибке.
...
Рейтинг: 0 / 0
Application.OnTime
    #36817528
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Ruslan B.,
"MySub" должен быть в Экселе.
Сделал связку с Excel:
Код: plaintext
1.
2.
3.
4.
5.
Set objExcel = CreateObject("Excel.Application")
Set wb = objExcel.Workbooks.Open(App.Path & "\файл.xlsm")
objExcel.Visible = False
objExcel.Run "MySub" 'запускаемая процедура
Set objExcel = Nothing
Но теперь не знаю как избавиться от такой ситуации:
файл.xlsm висит какое-то время в памяти (невидимый) и ждет срабатывания On.Time (в процедуре MySub).
Так вот если в это время вручную открыть любой другой файл Excel, то окошко файл.xlsm становится видимым
и его можно закрыть вручную, пока он еще не закончил свою работу.
...
Рейтинг: 0 / 0
Application.OnTime
    #36817534
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan B.,

Книгу можно скрыть
...
Рейтинг: 0 / 0
Application.OnTime
    #36817538
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProRuslan B.,

Книгу можно скрыть
А как? Если
Код: plaintext
Visible = False
не помогает.
...
Рейтинг: 0 / 0
Application.OnTime
    #36817539
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan B.,

Visible для какого объекта?
...
Рейтинг: 0 / 0
Application.OnTime
    #36817544
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы имеете ввиду код выше? так вы скрываете эксель, а не книгу.

Точнее даже так - скрывается не книга, а окно (то есть .Visible=False надо применить к объекту типа Window)
Например
Код: plaintext
ActiveWindow.Visible = False
Но работать с ActiveWindow на мой взгляд не совсем кошерно, так что лучше через коллекцию Windows вашего объекта wb
...
Рейтинг: 0 / 0
Application.OnTime
    #36817553
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProВы имеете ввиду код выше?
Да
Shocker.Pro
Например
Код: plaintext
ActiveWindow.Visible = False

В этом случае при открытии и последующем закрытие (вручную) другого файла xls остается видимым окно Excel (правда самого файла "файл.xlsm" не видно, но при закрытии окна Excel "файл.xlsm" закрывается.
Shocker.Proчерез коллекцию Windows вашего объекта wb
Об этом можно поподробнее пожалуйста.
...
Рейтинг: 0 / 0
Application.OnTime
    #36817591
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При открытии файла xls из VB6 и вручную (разные файлы) - они открываются в одном процессе excel.exe
(в диспетчере задач). Можно ли сделать так, чтобы эти процессы открывались независимо друг от друга?
...
Рейтинг: 0 / 0
Application.OnTime
    #36817675
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruslan B.Shocker.Proчерез коллекцию Windows вашего объекта wb
Об этом можно поподробнее пожалуйста.
А что тут подробнее?
Так как, открыв свою книгу, вы вряд ли плодите окна, то в wb.Windows единственный член, его и делайте Visible=False.
Но вас это не устраивает, так как остается окно экселя при закрытии файла.

Можете попытаться следить за событиями вашего экселя из VB. При закрытии пользователем последнего документа кроме вашего, делать окно экселя невидимым.

Ruslan B.При открытии файла xls из VB6 и вручную (разные файлы) - они открываются в одном процессе excel.exe
(в диспетчере задач). Можно ли сделать так, чтобы эти процессы открывались независимо друг от друга?

Ну создайте два процесса excel.exe, поэкспериментируйте, в каком из них будут открываться файлы по инициативе пользователя.

Только все это ради OnTime в VB6? Может все-таки проще пересмотреть алгоритм?
...
Рейтинг: 0 / 0
Application.OnTime
    #36817892
Ruslan B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProМожет все-таки проще пересмотреть алгоритм?
Да похоже это будет проще. Спасибо за ответы.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Application.OnTime
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]