VBScript процедуры и функции
Как и в большинстве языков программирования, в VBScript можно использовать процедуры и функции, которые позволят разделить код на логически отдельные подпрограммы и вызывать их, если нужно несколько раз.
Процедуры в VBScript
Написание процедуры начинается с ключевого слова Sub затем идет наименование процедуры, перечисление параметров в скобках. Затем идет программный код и заканчивается код ключевыми словами End Sub которые обозначают конец процедуры.
Пример процедуры без параметров:
Пример процедуры с параметрами:
Параметры в процедуре перечисляются без указания их типа.
Вызов процедуры осуществляется одним из 2-х способов:
- Call (Param1, Param2, Param3)
- Param1, Param2, Param3
Если пишем просто имя процедуры для ее вызова, тогда параметры, передаваемые ей перечиаляются просто следом после названия через запятую. Если же процедура вызывается с помощью Call, тогда параметры нужно обязательно перечислять в скобках.
Передавать параметры в процедуру можно по ссылке и по значению, для чего перед именем параметра пишем:
- ByRef — передача параметра по ссылке (при изменении параметра внутри процедуры, исходная переменная, которая передавалась, так же будет изменена)
- ByVal — передача параметра по значению (создается копия значения и изменение параметра внутри процедуры не изменяет исходную переменную, которая передавалась в процедуру)
Таким образом, если нужно в подпрограмме получить и вернуть в основную программу несколько значений, можно использовать передачу параметров по ссылке.
Пример возвращения нескольких значений из процедуры:
Функции в VBScript
Написание функции начинается с ключевого слова Function, затем название функции, перечисление передаваемых в нее параметров, код самой функции и заканчивается ключевыми словами End Function обозначающими конец функции.
Для того чтобы функция вернула значения, последней строкой нужно написать название функции и присвоить ей возвращаемое значение, в противном случае, функция вернет пустой результат.
Пример функции возвращающей значение:
Функцию можно использовать как процедуру, при этом параметры в нее можно передавать по тем же правилам, что и для процедуры и точно так же можно использовать ByVal и ByRef для передачи параметров по значению и по ссылке.
Пример использования функции как процедуры:
Если возможностей процедур и функций не достаточно, можно на VBScript написать классы, о которых рассказано в следующей статье. Если есть замечания/предложения по статье, пишем в комментариях.
WSH: преобразуем макрос VBA в скрипт VBScript
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 4
1 Тема от alexii 2011-03-31 04:12:37
- alexii
- Разработчик
- Неактивен
Тема: WSH: преобразуем макрос VBA в скрипт VBScript
При автоматизации Microsoft Office средствами Windows Script Host довольно часто бывает проще записать макрос непосредственно в самом приложении Microsoft Office, а затем перенести текст полученного макроса Visual Basic for Apllication в скрипт Windows Script Host. Как правильно осуществить этот перенос?
Далее упоминания об использовании обычного скрипта *.vbs обозначены как VBS, об использовании формата скрипта *.wsf (WSH: пишем сценарии в формате WSF) — как WSF.
1. Константы
При переносе констант Microsoft Office в скрипт Windows Script Host нужно помнить следующее:
VBS: нужно вручную описать все используемые константы посредством ключевого слова Const.
WSF: достаточно добавить тэг reference, либо же использовать методику, изложенную в предыдущем пункте.
2. Оператор «:=», именованные и необязательные аргументы
Оператор «:=» присваивания значения некоторому параметру метода (используемый в макросах VBA для сокращения записи, когда задаются значения не всех параметров, либо параметры перечисляются в порядке, отличающемся от заданного прототипом) в Windows Script Host не поддерживается, поскольку Windows Script Host не поддерживает именованные аргументы, а только позиционные. Посему требуется убрать наименования аргументов (вместе с оператором «:=») и расставить аргументы в правильную позицию, так, как это описано в объектной модели того или иного метода или события. В большинстве случаев при работе с приложениями Microsoft Office необязательные аргументы допускается просто пропускать.
3. Глобальные объекты, раннее и позднее связывание
В глобальном контексте приложения Microsoft Office обычно наличествуют один или более глобальных объектов, таких, как объект Apllication целевого приложения, объекты CommandBars, FileDialog, Scripts (и т.д.) объектной модели самого Microsoft Office, объект UserForms объектной модели Visual Basic for Apllication. Ссылки на библиотеки, реализующие поддержку этих объектов изначально присутствуют в свойствах проекта VBA (\Tools\References…). В отличие от VBA, поддерживающего как раннее, так и позднее связывание, Windows Script Host поддерживает только позднее связывание при создании объектов. Исходя из вышеизложенного, надо помнить, что любой глобальный объект Microsoft Office требует явного предварительного создания перед использованием, как правило, завершения работы приложения методом «.Quit()» и очистки объектной переменной путём присвоения ей значения Nothing.
VBS:
WSF: объект может быть создан при помощи тэга object, либо может быть использована та же методика, что и для VBS.
Замечание: последний способ не рекомендуется использовать для Microsoft Word, ибо может возникать ситуация (при вызове скрипта *.wsf с параметром «/?», чтобы посмотреть справку скрипта), когда приложение останется в памяти после завершения работы скрипта. Особенности поведения приложений Microsoft Office при использовании технологии Automation изложены в KB288902: GetObject and CreateObject behavior of Office automation servers, в частности:
Note For Word, the UserControl property is read-only. It cannot be set to True or False. Word always remains running when the last reference is released.
Поэтому для Microsoft Word рекомендуется использовать методику, описанную в предыдущем пункте — непосредственное создание объекта в коде и завершение его методом «.Quit()».
4. Обработка событий
Поддержка обработки событий в Windows Script Host для объектов Microsoft Office осуществляется стандартными способами.
VBS:
WSF: можно добавить атрибут events со значением «true» в тэг «object». Кроме того, поддерживается использование методики, описанной в предыдущем пункте.
Замечание: к сожалению, большую часть событий приложений Microsoft Office обрабатывать не удаётся.
Visual basic html = vbscript обработка событий
Основы программирования на VBScript
VBScript — это язык сценариев, который предназначен для разработки интерактивных WEB -страниц. Коды VBScript загружаются в HTML документ, после чего браузер осуществляет выполнение этого сценария.
Кроме того, для обеспечения защиты из VBScript были изъяты возможности доступа к жестким дискам и операционной системе. Т.к. WEB — страницы запускаются на ПК пользователя, то этим исключается возможность испортить что-либо на его ПК при запуске WEB -страницы.
Сценарий- это обычный текстовый файл и для его редактирования можно использовать любой текстовый редактор.
Для вставки сценария в HTML документ предназначен тег Script . Атрибут Language определяет язык сценария. Для языка VBScript следует указать
Для языка JavaScript следует указать
HTML страницы могут содержать стандартные элементы управления: текстовые поля, кнопки, переключатели и другие. Для внедрения элементов управления на Web -страницу предназначен тег Input .
Пример вставки текстового поля.
Input Type = text Name =” txt 1” value =”АИС”>
Атрибут Type определяет тип элемента управления.
Атрибут Name определяет имя элемента управления, которое используется при написании сценариев.
Атрибут Value определяет исходное содержание текстового поля.
Атрибут Size определяет размер поля в символах.
Атрибут Maxlength определяет максимальное количество символов, вводимое пользователем.
Для вставки флажка тег Input имеет вид:
Каждый раз, когда пользователь щелкает на флажок, состояние элемента меняется на противоположное. Для исходной установки флажка используется атрибут Checked . Checked =1, если флажок установлен, и наоборот, если Checked =0, флажок сброшен.
Для вставки переключателя тег Input имеет вид:
В группе может быть установлен только один переключатель.
В отличие от флажков, обладающих собственными именами, группа переключателей объединяется общим именем. Для исходной установки одного из переключателей группы используется атрибут Checked .
Для вставки стандартной кнопки тег Input имеет вид:
При каждом нажатии на кнопку происходит событие kn 1_ onClick .
С помощью языка VBScript можно определить, как различные элементы управления будут реагировать на те или иные события.
HEAD > TITLE >Пример странички с VBScript TITLE >
В данном примере на Web -страницу вставлена кнопка, а сценарий запускается при щелчке на кнопку. Экрана обозревателя после загрузки Web -страницы представлен на рисунке 1.
Visual basic html = vbscript обработка событий
Теперь разберём эту «головоломку» по частям.
Первые три строки — это комментарии. Они не как не влияют на работу сценария. Что бы оставлять комментарии используется ключевое слово «Rem» или единичная клавиша ‘. Комментарии можно оставлять в любом месте кода, но надо учитывать, что после объявления комментария всё содержимое строки, которое идёт дальше, учитываться не будет.
На пятой строке перечислены все переменные, которые мы с вами будем использовать (a, b, c, d). Они бывают явными и не явными, но об это я расскажу попозже. Переменные объявляются ключевым словом «Dim».
С седьмой по десятую строку мы назначаем значение переменных. В данном случае это три числа и строка (10, 20, 40, «пробная срока»). Прошу обратить внимание, что все строки заключаются в ковычки.
На двенадцатой строке мы выводим значение всех переменных при помощи функции MsgBox. В данном примере у нас вылезет окошко с числом 10, а после нажатия кнопки «ОК» вылезет окошко с числом 20 и т.д. .
На мой взгляд, всё понятно, но мне не нравится чересчур большое количество строк. Давайте сократим код. Заодно я расскажу Вам про не явные переменные.
Получить результат выполнения скриптов из IE
Добрый день, коллеги.
Облазил миллион форумов в т.ч. иноязычных, и совсем отчаялся получить ответ. Хотя проблема, на первый взгляд, элементарная.
В текстовую переменную нужно получить тект HTML страницы. Функция вида: str$ = getText(url)
На самом деле я знаю решение данной проблемы через Selenium, но меня не устраивает отсутствие в этом инструменте скрытого режима работы, необходимость инсталляции драйвера, и ужасное быстродействие.
Неужели нет более простого и изящного инструмента для того, чтобы тупо сграбить текст из браузера?
Приоритет выполнения и прерывание скриптов
Спасибо всем, кто обратил внимание на тему. Есть 2 скрипта, №2 запускается по событию и его.
Получить результат выполнения JavaScript’a
Доброго времени суток, есть сайт, на котором всего одна кнопка и несколько textbox’ов. В OnClick.
Получить результат выполнения метода
Доброго времени суток! Помогите разобраться с проблемой, пожалуйста. В ООП только начала.
Как получить результат выполнения функции
Как в делфи 7 можно получить результат выполнения функции на web-странице без использования.
Получить из Oracle в Access результат выполнения процедуры
Добрый день всем! В книге вычитал, что запросы напрямую к серверу в Access (dbSQLPassThrough).
Visual Basic | |||||||||||||||||||||
04.04.2015, 17:35 [ТС] | 3 | ||||||||||||||||||||
К сожалению, в результате работы кода строчки «No odds found» нет, выдается все тот же код, а не текст страницы: |
|||||||||||||||||||||
04.04.2015, 18:33 | 4 | ||||||||||||||||||||
РешениеFreshman1976, Получить текст страницы можно, например, так :
|