Упражнение 2. Экспорт данных в Excel
Упражнение 2. Экспорт данных в Excel Теперь сохраним график изменения уровня с интервалом в 1 секунду в таблице Excel. На самом деле, использовать Excel для записи исторических значений сигнала, да еще и на стороне клиентской программы нелогично, но мы выполним здесь эту задачу, как пример взаимодействия InfinityHMI со сторонним приложением, поддерживающим технологию OLE Automation, исключительно потому, что данное приложение есть на большинстве компьютеров. 10. Сохраните файл под именем Фамилия11. xml. 11. Создайте кнопку «Экспорт значения в Excel». Это у нас будет отладочный вариант. В окончательном варианте данной кнопки не будет. Настройте для этой кнопки выполнение сценария VBA и откройте этот сценарий на редактирование. 12. Теперь необходимо установить связь с данными, предоставляемыми Excel. Для этого в редакторе VBA в меню Сервис -> Ссылки (Tools -> References) выберите Microsoft Excel 10. 0 Object Library, как показано на рис. 5. 4 (версия Excel, установленная на Вашем компьютере может быть другая). Рис. 5. 4. Выбор компонента MS Excel для ссылки на него из скрипта
13. Выберите в дереве проекта объект Infinity HMI Objects ThisDisplay. 14. В окне редактирования исходного текста в левом верхнем выпадающем списке выберите элемент Общая область (General), а в правом верхнем углу Описания (Declarations) (обычно эта область открыта по умолчанию). Внесите здесь строку Option Explicit. В данной секции окна программы могут быть сделаны объявления глобальных переменных и введены прототипы функций, используемых во всех процедурах: Option Explicit Public g_Excel_App As Excel. Application Public g_Excel_Book As Excel. Workbook Public g_Excel_Sheet As Excel. Worksheet 15. В окне программы объекта ThisDisplay в левом верхнем выпадающем списке выберите элемент GwxDisplay, а в правом верхнем углу PreRunTimeStart. При этом будет сгенерирована процедура - обработчик данного события. Данная процедура будет вызываться всякий при переходе в режим исполнения. Запишете в нее следующий код:
Private Sub GwxDisplay_PreRuntimeStart() ' Открыть Excel и сделать его видимым Set g_Excel_App = CreateObject(" Excel. application" ) g_Excel_App. Visible = True ' Открыть лист Excel Set g_Excel_Book = g_Excel_App. Workbooks. Add Set g_Excel_Sheet = g_Excel_Book. Worksheets(1) End Sub 16. Лишние процедуры, сгенерированные VBA можно удалить. В конечном итоге окно ThisDisplay должно выглядеть так, как на рис. 5. 5. Рис. 5. 5. Исходный текст (не законченный) процедуры старта экранной формы 17. Выберите в дереве проекта ветку GwxExcelExport_Main и в процедуру ExcelExport запишите код для сохранения значения сигнала Level в очередную строку первого столбца текущего листа Excel.
18. Убедитесь, что созданный Вами сценарий корректно работает. В текущем варианте при переходе в режим исполнения у Вас должен открываться Excel и в нем создаваться несколько листов (так как это настроено по умолчанию в Excel). В активном листе при нажатии на кнопку «Экспорт значения в Excel» должно появляться значение уровня жидкости в резервуаре. Каждое очередное значение должно появляться в новой строке. Закрывать Excel до закрытия мнемосхемы (перехода в режим редактирования) делать не стоит, так как это приведет к ошибке при нажатии на кнопку «Экспорт значения в Excel». При каждом запуске мнемосхемы должна открываться новая книга Excel. Если все работает правильно, то можно переходить к следующему пункту.
19. Теперь можно сделать окончательный вариант экспорта: вместо кнопки сделайте какому-нибудь объекту вызов сценария VBA при помощи динамики «Динамическое действие». В качестве имени сценария укажите имя сценария из созданной ранее кнопки. Настройте запуск сценария один раз в 1000 мс. 20. По желанию можно сделать автоматическое формирование графика средствами Excel, можно не показывать файл на экране и сохранять его автоматически при переходе в режим редактирования или выходе. На этом лабораторная работа закончена
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|