Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
Пример из стандартной экселевской справки:
Application.OnTime EarliestTime:=TimeValue("17:00:00";), _
    Procedure:="my_Procedure", Schedule:=False

Короче, выполнение этой строчки кода укажет екселю что в 17:00 надо выполнить макрос с именем "my_Procedure". Если нужно чтобы ваша процедура выполнялась через промежутки времени 1 секунду то надо в её код ввести строчку типа
Application.OnTime EarliestTime:=now()+TimeValue("00:00:01";), _
    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
Sub WriteDataBtn_Click()
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
Извиняюсь. Просто хотел выделить жирным и не вышло.
Sub WriteDataBtn_Click()
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 секунда.Не совсем удобно.
Еще вопрос,как сделать,чтобы в одной и тойже книге осуществлялось чтение из одной ячейки и запись в другую,т.е. как сделать дублирование ячейки?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам