Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2014, 14:06   #1
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию оптимальное(?) динамическое обновление excel

добрый день!

хочется рефрешишь некоторые переменные в файле, думаю как это сделать лучше..
оптимальный критерий - чтобы в файле человек как работал так и работал, но какой-то скрипт выполнился, некоторые цифры поменялись.
думал, сделать что-то подобное,
Do
Wscript.Sleep 30000
CreateObject("WScript.Shell").SendK eys "{F15}"
Loop
но как сделать так, чтобы Excel определил событие? (предполагается, что он активен)
или можно поступить как-то проще?
peq вне форума Ответить с цитированием
Старый 06.10.2014, 16:27   #2
Ves67
 
Регистрация: 05.10.2014
Сообщений: 7
По умолчанию

после какого сбытия должен сработать скрипт?
Ves67 вне форума Ответить с цитированием
Старый 06.10.2014, 17:31   #3
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

там скорее привязка нужна к временному интервалу, который может меняться.
подумал, поискал.. в принципе меня устраивает такой вот вариант
>>Application.OnTime Now + TimeSerial(0, 0, 5)
хотя привязка к vbs мне тоже нравится.. но недопонимаю как наладить, чтобы работало все быстро и не косячило при работе в других книгах, в vb, в других приложениях.
peq вне форума Ответить с цитированием
Старый 06.10.2014, 17:35   #4
Ves67
 
Регистрация: 05.10.2014
Сообщений: 7
По умолчанию

Цитата:
но как сделать так, чтобы Excel определил событие? (предполагается, что он активен)
что должен сделать excel? определить событие? уточните,а то не понятно,что вам нужно

на ontime влияет только excel,а другие программы не влияют ,поэтому вам нужно позаобоиться только об ontime в excel. vba тоже не мешает ontime

Последний раз редактировалось Ves67; 06.10.2014 в 17:40.
Ves67 вне форума Ответить с цитированием
Старый 07.10.2014, 06:02   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
чтобы работало все быстро и не косячило при работе в других книгах, в vb, в других приложениях
вы забыли дописать: , в других операционных системах, на квантовых компьютерах, и т.д.


Application.OnTime
обратите внимание на Application - в данном случае, это Excel
В VBS нет Excel - потому такой метод не сработает
В других приложениях может не быть метода OnTime

так что этот метод применим прежде всего к Excel


Цитата:
чтобы работало все быстро
а тут все от вашего макроса зависит, который будет запускаться по OnTime
Если он быстрый - то никаких проблем
Сам метод OnTime срабатывает моментально (собственно, это всего лишь одна команда - запуска макроса)
EducatedFool вне форума Ответить с цитированием
Старый 07.10.2014, 19:48   #6
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

Цитата:
что должен сделать excel? определить событие? уточните,а то не понятно,что вам нужно
одна из задач была в том, чтобы с некоторым интервалом, который может меняться, excel лез куда-то, брал что-то и пересчитывал чего-то внутри себя. при этом, если пользователь работает в этом excel, в других excel, или в прочих приложениях, чтобы у него никаких ошибок не вылетало, ничего лишнего не печаталось. то есть, на его работоспособности, чтобы новый процесс никак не сказывался.

Цитата:
вы забыли дописать: , в других операционных системах, на квантовых компьютерах, и т.д.
ну мне просто кажется, что систему если хочется в чем-то улучшить, то важно, чтобы улучшения не порождали дополнительные косяки, сбои и т.д. по крайней мере существенные.
в чем-то допилить, а в чем-то соизмеримом испортить - плохо!

Цитата:
обратите внимание на Application - в данном случае, это Excel
В VBS нет Excel - потому такой метод не сработает
В других приложениях может не быть метода OnTime
я понял, и мне это довольно удобно.
но интересно, а можно ли каким-нибудь обработчиком в excel {F15}, кинутую "в пространство" со стороны vbs отследить и куда-нибудь в себя записать навроде Лист1!A1="20:25:25 - Hello, F15!"
но при этом, чтобы у пользователя была максимальная свобода в действиях.

Последний раз редактировалось peq; 07.10.2014 в 20:25.
peq вне форума Ответить с цитированием
Старый 08.10.2014, 00:01   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
кинутую "в пространство" со стороны vbs
вам бы не макросы писать, а художественную литературу)


По теме: VBS может запустить макрос в открытом Excel
для этого:

1) получаете ссылку на приложение Excel
set XL = GetObject(,"Excel.application")
сработает, если Excel уже запущен

2) запускаете макрос с именем test (неважно, в какой из открытых книг этот макрос, - лишь бы он был как Public в стандартном модуле)
res = XL.run("test")

макросу можно передать параметры, и считать результат в переменную res:
res = XL.run("test", "Параметр1", txt)
EducatedFool вне форума Ответить с цитированием
Старый 08.10.2014, 12:11   #8
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

Цитата:
вам бы не макросы писать, а художественную литературу)
) честно говоря, немного уже подумывал. но времени нема.. вчера вот ушел с работы только после 12ти.

по теме - спасибо.
когда-нибудь куда-нибудь обязательно ее "впилю"
удобная очень штука.
peq вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти оптимальное решение по планированию прозиводства (Мебельная фабрика для сборки столов и стульев) на Excel или MathCad AL_BoomHaueR Помощь студентам 1 15.04.2013 12:54
Excel Задача на оптимальное использование(распределение) ресурсов 100р на тел AmIsARES Фриланс 1 27.12.2011 19:18
~excel~исследованию операций!~оптимальное планирование финансов~ ChekaGo Microsoft Office Excel 2 16.01.2011 15:57
qt динамическое обновление окна jodam Qt и кроссплатформенное программирование С/С++ 2 18.05.2010 15:45
Динамическое обновление таблицы Veiron БД в Delphi 4 01.07.2009 18:08