четверг, 28 мая 2015 г.

Проверка - тот ли файл открыли

Перед обработкой любого файла нужно убедится, что это именно тот файл, для которого предназначен запускаемый макрос. Если не провести эту проверку, в случае если пользователь начнет выполнение программы не в том файле, программа исполнится и обработает его не корректно, что может привести к его повреждению и зависанию системы.
Рассмотрим код проверки:

Sub Programm
Dim oCellAddress 
oCelles = ThisComponent.Sheets(0).getCellRangeByName("F1") 
If oCelles.String <> "Количество" Then 
MsgBox " Данный файл не является отчетом" & Chr$(13) & "Реестр товарных позиций, либо имеет поврежденную структуру" & Chr$(13) & "Экспортируйте отчет Реестр товарных позиций за нужный период и откройте его",16, "Предупреждение:" 
Exit Sub
End If
End sub

Разберем код:
Любая программа начинается со строчки Sub Имя_модуля и заканчивается строчкой End Sub.
Эти строчки стандарты и справедливы для любой программы. В одной вкладке редактора не может быть двух модулей с одинаковым именем.
Dim oCellAddress  - объявление переменной адресов ячеек, стандартная строчка
oCelles = ThisComponent.Sheets(0).getCellRangeByName("F1")  - данная строчка оперделяет, что переменная oCelles равна содержимому ячейки F1 первого листа в книге (нумерация листов в StarBasic начинается с нуля - т.е. первый лист это Sheets(0), второй лист это Sheets(1)).
If oCelles.String <> "Количество" Then  - данная строчка дословно переводится Если строчное значение переменной oCelles не равно строчке "Количество" Тогда.
If.....Then это стандартная конструкция условий во многих языках, после нее в следующих строках пишут. что нужно сделать. если условие выполняется. Данный блок всегда заканчивается строчкой End if которая закрывает конструкцию.
MsgBox " Данный файл не является отчетом" & Chr$(13) & "Реестр товарных позиций, либо имеет поврежденную структуру" & Chr$(13) & "Экспортируйте отчет Реестр товарных позиций за нужный период и откройте его",16, "Предупреждение:"  - функция MsgBox выводит окно предупреждения к кнопкой "ОК". После объявления функции в кавычках пишут нужный текст, номер типа окна (в данном случае 16 - окно об ошибке) и заголовок этого окна (в данном случае "Предупреждение").
Exit Sub - данная строчка досрочно завершает процедуру и дальнейший код не выполняется, предотвращая ошибку, в том случае, если файл не прошел проверку в блоке if ...then.
При создании новой программы, каждый раз не нужно писать блок заново - копируем блок из другой программы, меняем проверяемые значения:
1. Какую ячейку и на каком листе проверяем
2. Какой текст ищем
3. Что пишем в сообщении (какой отчет нужен).
За время обучения и вашего практического применения StarBasic для программирования различных программ у вас накопится множество блоков, выполняющих стандартные функции и все программирование сведется к копированию этих блоков в новые программы и замене значений под новые условия.
Задание - скопируйте код в новый программный модуль ООО и выполните его.
Копируйте все коды, которые будут в этом и дальнейших заданиях в отдельные текстовые файлы, чтобы в случае сбоя ООО ваши данные были сохранение. Очень часто придется вносить правки в уже созданные макросы и будет хорошо если они у вас будут где-то отдельно сохранены, чтобы внести необходимые изменения не переписывая все заново.

Комментариев нет:

Отправить комментарий