Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автосохранение с тем же именем каждые 10 секунд - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автосохранение с тем же именем каждые 10 секунд (Макросы/Sub)
Автосохранение с тем же именем каждые 10 секунд
sergemat Дата: Вторник, 28.11.2017, 19:17 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте.
Прошу помочь с решением задачи автоматического сохранения файла каждые 10-20 секунд. Это условие обусловлено тем, что Excel выступает посредником при передаче данных от ПЛК (программируемый логический контроллер на производстве) и SQL сервером, который и хранит эти данные.
Цепочка выглядит так :
ПЛК -> OPC сервер -> Excel 2007 -> SQL
Excel в реальном времени DDE командами забирает данные
зацикленный код типа :

[vba]
Код
Sub AutoSave()
Do Until False
Application.Wait (DateAdd("s", 20, Now()))
ActiveWorkbook.Save
Loop
End Sub
[/vba]

файл, конечно, каждые 20 секунд сохраняет, но файл данные с OPC сервера не обновляются и реальные параметры в SQL не записываются
К сообщению приложен файл: 0522546.png(77Kb)


Сергей.

Сообщение отредактировал sergemat - Вторник, 28.11.2017, 19:56
 
Ответить
СообщениеЗдравствуйте.
Прошу помочь с решением задачи автоматического сохранения файла каждые 10-20 секунд. Это условие обусловлено тем, что Excel выступает посредником при передаче данных от ПЛК (программируемый логический контроллер на производстве) и SQL сервером, который и хранит эти данные.
Цепочка выглядит так :
ПЛК -> OPC сервер -> Excel 2007 -> SQL
Excel в реальном времени DDE командами забирает данные
зацикленный код типа :

[vba]
Код
Sub AutoSave()
Do Until False
Application.Wait (DateAdd("s", 20, Now()))
ActiveWorkbook.Save
Loop
End Sub
[/vba]

файл, конечно, каждые 20 секунд сохраняет, но файл данные с OPC сервера не обновляются и реальные параметры в SQL не записываются

Автор - sergemat
Дата добавления - 28.11.2017 в 19:17
Hugo Дата: Вторник, 28.11.2017, 20:46 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2718
Репутация: 606 ±
Замечаний: 0% ±

Так может файл сохранять не по таймеру, а как прошло обновление?


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеТак может файл сохранять не по таймеру, а как прошло обновление?

Автор - Hugo
Дата добавления - 28.11.2017 в 20:46
sergemat Дата: Среда, 29.11.2017, 09:25 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, Да, это тоже выход. Правда параметры меняются 1 раз в секунду но это я могу настроить OPC сервером. Не подскажете, как это можно реализовать?


Сергей.
 
Ответить
СообщениеHugo, Да, это тоже выход. Правда параметры меняются 1 раз в секунду но это я могу настроить OPC сервером. Не подскажете, как это можно реализовать?

Автор - sergemat
Дата добавления - 29.11.2017 в 09:25
Hugo Дата: Среда, 29.11.2017, 10:04 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2718
Репутация: 606 ±
Замечаний: 0% ±

Подскажу - ставите на лист текстбокс (можно его сделать невидимым), завязываете на ячейку A1 (или сколько там, может A25489 - Вы не показали), на события текстбокса пишите сохранение файла. Как сменится время - файл начнёт сохраняться. Правда не факт что он за 10 секунд успеет сохраниться 10 раз...


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеПодскажу - ставите на лист текстбокс (можно его сделать невидимым), завязываете на ячейку A1 (или сколько там, может A25489 - Вы не показали), на события текстбокса пишите сохранение файла. Как сменится время - файл начнёт сохраняться. Правда не факт что он за 10 секунд успеет сохраниться 10 раз...

Автор - Hugo
Дата добавления - 29.11.2017 в 10:04
sergemat Дата: Среда, 29.11.2017, 21:57 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, Спасибо за совет! Но решил проблему следующим образом
[vba]
Код
Sub save10()
ThisWorkbook.Save
myTime = Now + TimeValue("00:00:10")
Application.OnTime myTime, "save10"
End Sub
[/vba]


Сергей.
 
Ответить
СообщениеHugo, Спасибо за совет! Но решил проблему следующим образом
[vba]
Код
Sub save10()
ThisWorkbook.Save
myTime = Now + TimeValue("00:00:10")
Application.OnTime myTime, "save10"
End Sub
[/vba]

Автор - sergemat
Дата добавления - 29.11.2017 в 21:57
Hugo Дата: Четверг, 30.11.2017, 00:01 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2718
Репутация: 606 ±
Замечаний: 0% ±

Можно и так.
Только по событию закрытия книги посоветую скинуть Application.OnTime, как указано в хелпе. Тем болеее что переменная времени уже есть, только сделайте её глобальной.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеМожно и так.
Только по событию закрытия книги посоветую скинуть Application.OnTime, как указано в хелпе. Тем болеее что переменная времени уже есть, только сделайте её глобальной.

Автор - Hugo
Дата добавления - 30.11.2017 в 00:01
sergemat Дата: Четверг, 30.11.2017, 14:19 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, Спасибо большое!
Тема закрыта.


Сергей.
 
Ответить
СообщениеHugo, Спасибо большое!
Тема закрыта.

Автор - sergemat
Дата добавления - 30.11.2017 в 14:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автосохранение с тем же именем каждые 10 секунд (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!