Страница: 1 |
Страница: 1 |
Вопрос: автоматический запуск макроса
Добавлено: 18.06.08 17:59
Автор вопроса: Михаил
Подскажите пожалуйста.Есть макрос,на запись содержимого ячейки в логическое устройство через DDE протокол.Как сделать,чтобы этот макрос выполнялся постоянно.Не привязыванием его к кнопке,а именно постоянно.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #1
Добавлено: 18.06.08 18:05
WORD,Excel,Visio?
Что значит постоянно? - 1 раз в секунду, при открытии файла, при поглаживании системника против шерсти?
Номер ответа: 2
Автор ответа:
Михаил
Вопросов: 1
Ответов: 5
Профиль | | #2
Добавлено: 18.06.08 18:19
Сам макрос
Sub WriteDataBtn_Click()
Chanel = DDEInitiate (“Dsdata”, “DemoTopic”)
DdePoke Chanel, “Y1”, Cells(1, 1)
DdeTerminate Chanel
End Sub
смысл второй строчки не важен,в результате в логическое устройство,на выход Y1 записывается сожержимое Cells(1, 1)
этот макрос можно присвоить кнопке,а хочется чтобы он выполнялся постоянно,ну или с интервалом 0.5 секунды.
Номер ответа: 3
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #3
Добавлено: 18.06.08 18:42
Да в каком приложении макрос то?
В Word и в Excel есть метод Application.OnTime
Пример из стандартной экселевской справки:
Procedure:="my_Procedure", Schedule:=False
Короче, выполнение этой строчки кода укажет екселю что в 17:00 надо выполнить макрос с именем "my_Procedure". Если нужно чтобы ваша процедура выполнялась через промежутки времени 1 секунду то надо в её код ввести строчку типа
Procedure:="my_Procedure", Schedule:=False
это значит типа "Уважаемый Excel, узнай пожалуйста текущее системное время и запусти меня через одну секундочку."
Как сделать чтобы через 0,5сек. не знаю.
Номер ответа: 4
Автор ответа:
Михаил
Вопросов: 1
Ответов: 5
Профиль | | #4
Добавлено: 18.06.08 18:44
спасибо большое
приложение excel
Номер ответа: 5
Автор ответа:
Михаил
Вопросов: 1
Ответов: 5
Профиль | | #5
Добавлено: 18.06.08 18:46
получается макрос должен выглядеть так?
Sub WriteDataBtn_Click()
Chanel = DDEInitiate (“Dsdata”, “DemoTopic”)
DdePoke Chanel, “Y1”, Cells(1, 1)
DdeTerminate Chanel
Application.OnTime EarliestTime:=now()+TimeValue("00:00:01", _
Procedure:="my_Procedure", Schedule:=False
End Sub
Номер ответа: 6
Автор ответа:
Михаил
Вопросов: 1
Ответов: 5
Профиль | | #6
Добавлено: 18.06.08 19:55
Чего-то не получилось.Как должен выглядеть макрос?
Номер ответа: 7
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #7
Добавлено: 20.06.08 13:10
Chanel = DDEInitiate (“Dsdata”, “DemoTopic”)
DdePoke Chanel, “Y1”, Cells(1, 1)
DdeTerminate Chanel
Application.OnTime EarliestTime:=now()+TimeValue("00:00:01", _
Procedure:="[b]WriteDataBtn_Click[/b]", Schedule:=False
End Sub
Номер ответа: 8
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #8
Добавлено: 20.06.08 13:12
Извиняюсь. Просто хотел выделить жирным и не вышло.
Chanel = DDEInitiate (“Dsdata”, “DemoTopic”)
DdePoke Chanel, “Y1”, Cells(1, 1)
DdeTerminate Chanel
Application.OnTime EarliestTime:=now()+TimeValue("00:00:01", _
Procedure:="WriteDataBtn_Click", Schedule:=False
End Sub
Номер ответа: 9
Автор ответа:
Михаил
Вопросов: 1
Ответов: 5
Профиль | | #9
Добавлено: 24.06.08 18:08
Спасибо большое,правда я запустил без строчки Procedure:="WriteDataBtn_Click", Schedule:=False
В принципе работает,но получается задержка 1 секунда.Не совсем удобно.
Еще вопрос,как сделать,чтобы в одной и тойже книге осуществлялось чтение из одной ячейки и запись в другую,т.е. как сделать дублирование ячейки?