Перед обработкой любого файла нужно убедится, что это именно тот файл, для которого предназначен запускаемый макрос. Если не провести эту проверку, в случае если пользователь начнет выполнение программы не в том файле, программа исполнится и обработает его не корректно, что может привести к его повреждению и зависанию системы.
Рассмотрим код проверки:
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 для программирования различных программ у вас накопится множество блоков, выполняющих стандартные функции и все программирование сведется к копированию этих блоков в новые программы и замене значений под новые условия.
Задание - скопируйте код в новый программный модуль ООО и выполните его.
Копируйте все коды, которые будут в этом и дальнейших заданиях в отдельные текстовые файлы, чтобы в случае сбоя ООО ваши данные были сохранение. Очень часто придется вносить правки в уже созданные макросы и будет хорошо если они у вас будут где-то отдельно сохранены, чтобы внести необходимые изменения не переписывая все заново.
Рассмотрим код проверки:
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 для программирования различных программ у вас накопится множество блоков, выполняющих стандартные функции и все программирование сведется к копированию этих блоков в новые программы и замене значений под новые условия.
Задание - скопируйте код в новый программный модуль ООО и выполните его.
Копируйте все коды, которые будут в этом и дальнейших заданиях в отдельные текстовые файлы, чтобы в случае сбоя ООО ваши данные были сохранение. Очень часто придется вносить правки в уже созданные макросы и будет хорошо если они у вас будут где-то отдельно сохранены, чтобы внести необходимые изменения не переписывая все заново.
Комментариев нет:
Отправить комментарий