Как работать в программе visual basic

Visual Basic For Application (VBA — Visual Basic для приложений) реализован в четырех важнейших компонентах пакета Microsoft Office. VBA представляет собой полностью унифицированный язык программирования и почти полностью унифицированную среду разработки.

VBA включает в себя основные конструкции языка Visual Basic для Windows, встроен в MS Office и приложения Office. VBA является общим для всех приложений MS Office. В VBA применяется объектно- ориентированный подход к разработке приложений.

Каждое приложение — Word, Excel, Access, Power Point и др. — дополняет средства VBA новыми функциональными возможностями с помощью объектов, свойств и методов, присущих этому приложению. Как объектно-ориентированный язык программирования VBA использует следующие основные понятия: объект, свойство, метод, событие, класс и семейство объектов. Введем определения.

Объект — это объединение данных с кодом, предназначенным для их обработки. Объекты применяются в программировании, потому что они представляют предметы, о внутренней организации которых и о том, как они сделаны, программисту не обязательно даже знать, но он может ими пользоваться и управлять.

Visual Basic 2010 для начинающих 1й урок 1/3

Свойства — это параметры объекта, которые ему присущи. Они характеризуют объект. Все свойства объекта имеют свои имена. Различные объекты характеризуются различными свойствами, например, объект «линия» характеризуется длиной и цветом, а объект «окружность» радиусом и цветом. Синтаксис задания свойства объекту имеет вид:

ОБЪЕКТ. СВОЙСТВО = Значение.

‘изменить имя текущего листа

ActiveSheets . Name = “Январь”

Гпава 6. Программирование на языке Visual Basic For Application

Метод — это программа, которая воздействует на объекты и их параметры. С помощью методов можно, например, закрыть объект, удалить его или показать на экране. Синтаксис записи такой:

Событие — это действие, распознаваемое объектом, для которого можно запрограммировать отклик (например, щелчок мышью по строке меню или нажатие клавиши). При наступлении события происходит активизация метода, т. е. начинают выполняться связанные с объектом программы и функции.

Класс — это шаблон, на основе которого во время выполнения программы создается объект. Класс определяет свойства и методы объекта. Если взять пример из жизни, то в качестве класса объектов можно принять школьный класс, где объекты — это учащиеся, каждый со своими, присущими только ему свойствами. Также каждому объекту в классе присущи одно или несколько одинаковых свойств, например возраст, по которому и определяется принадлежность объекта к классу. Объект, который создается на основе класса, называют экземпляром класса.

Итак, все приложения Microsoft Office имеют макроязык и средство записи макросов. Все макрокоманды VBA включаются в проекты, которые могут принадлежать различным документам. При создании проекта используется один из трех методов:

  • • запись макроса при помощи макрорекодера, с последующим его редактированием;
  • • создание макроса в редакторе VBA;
  • • создание проекта в редакторе VBA.

Код VBA хранится в проектах. Проекты содержат модули, а модули включают процедуры и функции. Процедуры и функции содержат описания и инструкции на языке VBA.

Visual Basic 6.0. Урок первый. «Привет!!!»

Каждое приложение MS Office хранит проекты по-своему: Word сохраняет проекты в шаблонах документа (DOT) и в документах (DOC); Excel сохраняет проекты в рабочих книгах (XLS); Access сохраняет проекты в файлах базы данных (MDB); PowerPoint сохраняет проекты в презентациях (РРТ).

Для программирования на языке VBA нет необходимости в обязательном порядке устанавливать какую-либо версию транслятора VB

(VisualBasic). Вполне достаточно, если на компьютере будет установлен пакет Microsoft Office 97 и выше. Для создания программы, которая называется макросом, необходимо загрузить Microsoft Word или Microsoft Excel. Далее: Главное меню —» Сервис —» Макрос —> Редактор Visual Basic. В окне проекта первой строкой записывается оператор объявления процедуры (программы):

Sub имя() это стандартный заголовок макроса. Завершающей строкой процедуры является строка EndSub.

Для запуска программы из редактора используется клавиша F5; для запуска программы из документа — Alt+F8.

При написании кода VBA следует знать некоторые правила или соглашения, которых следует придерживаться, чтобы избежать ошибок выполнения кода. Первое соглашение — это соглашение по именам. Именовать нам придется переменные, константы, процедуры, функции, объекты и т. д., поэтому определим правила, которым будем следовать:

  • • длина имен не должна превышать 255 символов;
  • • имена должны начинаться с буквы и могут содержать комбинацию букв, цифр и символов;
  • • имена не должны совпадать со стандартными именами языка Visual

Регистр букв в именах не имеет значения, т.е. следующие имена: PRICE, Price и price — эквивалентны.

Примеры правильной записи имен:

Н123, Price, Sale

Неправильно записанные имена:

21 days — начинается с цифры;

PriceSale — содержит символ пробела;

Dim — совпадает со служебным словом языка.

Дадим также несколько определений элементам VBA.

Ключевые слова — это слово или символ, которые являются элементом языка программирования Visual Basic. Это может быть инструкция, имя функции, оператор, например: SUB, DIM, CONST.

Выражение — это комбинация ключевых слов, операций, констант. Результатом выражения может быть строка, логическое значение или число. Примеры выражений: Х+3 Z<>0; 11.

Читайте также:
Какая сфера была приоритетной в программе восстановления и развития народного хозяйства

Операторы — это специальные языковые конструкции, которые используются для объединения простых выражений в более сложные. Операторы VBA выполняют арифметические, логические операции, а также операции сравнения и конкатенации (сцепления строк).

Типы данных языка VBA. Язык Visual Basic имеет 11 встроенных типов данных (табл. 6.1).

Основные типы данных языка VBA

Размер в байтах

True или False (да — нет, включен — отключен)

От (-32768) до 32768

От (-2147483648) до 2147483647

От (-3.402823Е+38) до (-1.401298Е-45) нот 1.401298Е-45 до 3.402823Е+38

От ± 1.79769313486232Е+308 до ± 4.94065645841247Е-324

От (-922337203685477.5808) до 922337203685477.5807

для дат и времени

От 01.01.100 до 31.12.9999

Длина строки от 0 до 65535 символов

Определяется количеством и размером элементов

из встроенных типов данных

Тип данных определяет, каким образом задаваемая величина хранится в памяти компьютера; сколько разрядов может содержать присваиваемое ей значение; насколько оно может быть велико и может ли иметь дробную часть. Рассмотрим типы данных VBA более подробно.

Boolean использует для хранения значения 2 байта памяти, как и тип Integer, хотя может принимать значения либо 0 (ложь — False), либо 1 (True правда). Для хранения этой информации достаточно 1 бита, а занимается 16 бит.

Integer предназначен для хранения смещенного целого числа, т. е. с указанием знака числа «+» или «-». Из 16 бит 1 используется для хранения знака, а остальные используются для значащих цифр.

Long используется для хранения смещенного целого числа с двойным разрешением по сравнению с Integer и соответственно занимает в два раза больше памяти. Из 32, занимаемых в памяти бит, 1 предназначается для хранения знака, 31 — для хранения самого числа.

Single используется для вычислений с плавающей точкой. Переменные данного типа обеспечивают точность до 6-го знака после десятичной точки.

Double предназначен для хранения действительного числа с плавающей точкой двойной точности по отношению к Single. Для хранения требует вдвое больше памяти, но и диапазон значений расширяется в 8 раз.

Currency предназначен для хранения действительного числа с фиксированной точкой, которая всегда располагается между 4 и 5 цифрами справа. Этот тип специально предназначен для получения минимальных ошибок округления и чаще всего используется в бухгалтерских расчетах.

Пример: 0.0021 46.7280.

Date предназначен для хранения дат и времени с точностью до секунды. Машиной даты записываются следующим образом: целая часть — количество дней, прошедших от начала отсчета 01.01.1900, а дробная часть — время.

Пример: 05.03.1994 18.00 запишется как 34398.75. При работе с Excel следует помнить, что в нем диапазон используемых дат — от 01.01.1900 до 31.12.2078. Сам VBA позволяет оперировать датами в диапазоне 01.01.100 — 31.12.9999.

String используется для хранения текста по одному байту на символ, добавляя к этому количеству еще один для обозначения конца строки.

Object предназначен для ссылок на любой объект VBA.

Array определяет индексный список величин одного и других типов — массив.

Variant используется по умолчанию. Он задается VBA, если вы сами не укажете этот тип. При этом производится проверка значения, вводимого в память и его идентификация, поэтому резко возрастает и время выполнения программы, и объем памяти.

Переменная — это область памяти, которая предназначена для временного хранения данных и которой присвоено имя. Содержимое переменной может быть изменено в процессе выполнения программы. Данные, хранимые в переменных, могут быть различного типа: числовые

Гпава 6. Программирование на языке Visual Basic For Application

данные, строковые, логические и т. д. Тип данных определяет тип переменной.

Область определения переменной определяет, где можно использовать переменную. В VBA есть три уровня определения переменных.

1. Уровень процедуры. Переменные используются только в процедуре, в которой они описаны. Переменная описывается с помощью инструкции DIM, размещенной в теле процедуры.

Dim х As Single ‘переменная х описана как действительная одинарной точности;

Dim I As Integer ‘переменная I описана как целая.

  • 2. Уровень модуля. Переменные используются только в процедурах модуля, в которых они описаны, но не в других модулях проекта. Переменная описывается с помощью инструкции DIM, размещенной в разделе описаний модуля.
  • 3. Общие переменные. Переменные используются во всех модулях и процедурах проекта. Переменная описывается с помощью инструкции PUBLIC, размещенной в разделе описаний модуля.

Переменные уровня процедуры сохраняют свое значение лишь при выполнении процедуры, при выходе из процедуры значение переменной теряется. Если процедура вызывает другие процедуры, переменная сохраняет свое значение, пока не закончится выполнение и этих процедур. Если переменная уровня процедуры описана с помощью ключевого слова Static, она сохраняет свое значение до тех пор, пока программа выполняется в каком-либо модуле. По завершении работы всей программы переменная теряет свою область определения и свое значение. Ее время жизни совпадает с временем жизни переменной уровня модуля.

Если переменная не описана, то ей присваивается тип Variant при вводе имени переменной.

Константа — это именованная область памяти для хранения данных, изменение которых во время работы программы не допускается. Константа может иметь числовой, логический или строковый тип.

Константа описывается ключевым словом CONST, и при описании константы требуется присвоить ей значение. Попытка изменить в ходе выполнения программы значение константы вызывает ошибку.

Читайте также:
Программа для корректировки звука

Примеры описания констант:

Const Pi As Double = 3.1415926 описана константа Pi

Const Name = «Visual Basic» описана константа строкового типа.

Операции производятся над выражениями, переменными, константами, литералами.

Арифметические операций языка Visual Basic описаны в порядке убывания приоритета в табл. 6.2.

Арифметические и строковые операции языка VBA

Математические и строковые операции VBA в порядке убывания приоритета

Источник: studref.com

Руководство по исследованию программ, написанных на Visual Basic 6.0

ScienceStory

Приводим статью, которая увидела свет еще в середине 2005-го года на станицах ресурса WASM.RU. Приводим статью полностью, без редактирования. Актуальность информации (Visual Basic 6.0 и ОС тех лет), а также актуальность приведенных ссылок требует дополнительного анализа. Но речь не об этом .

[Вступление]

Многие почему то считают, что Visual Basic это примитивный язык программирования, который не может компилировать программы, работать с адресами переменных в памяти и не позволяющий вставлять ассемблерные процедуры в код. Так вот, все это неправда.

Начиная с версии 5.0 данный язык позволяет компилировать программы в Native Code, а также имеется возможность работы с адресами переменных в памяти (для этого существует функция varptr). Ассемблерные процедуры вставлять тоже можно, но не так просто. Для этого я написал уже 2 части статьи по вставке ассемблерных процедур в код на Visual Basic. Эти статьи можно найти на сайте www.dotfix.net. Как видите, недостатков у VB не так уж и много, а преимуществ настолько много, что я расскажу лишь о самых очевидных и важных:

  • Полноценная компиляция и маленький размер получаемых exe файлов. Несмотря на то, что программы требуют библиотеку MSVBVM60.DLL, это не является недостатком, так как эта библиотека интегрированная во все новые операционные системы и таскать ее вместе с приложением не нужно.
  • Простота написания кода. Все удобно и наглядно. Даже начинающий может писать неоптимизированные, но рабочие программы. Как говориться, умеешь писать качественно — пиши, от этого программы будут только лучше. Не умеешь — можешь писать неоптимизированные проги (переменные объявлять не обязательно, преобразовывать типы данных тоже не обязательно). Но постепенно приходят более глубокие познания и можно писать крупные проекты, не сильно уступающие аналогам на C++ или Delphi по скорости работы, но на разработку которых уходит гораздо меньше времени.Так вот, начинающие исследователи программ почему то считают, что программы, написанные на VB невозможно сломать. Если программа скомпилирована в pcode — я частично с ними соглашусь, но даже для этого вида компиляции уже написано множество отладчиков, способных понимать псевдокодовые инструкции. Что же касается Native Code, то тут все ломается также, как и любая другая программа, написанная например на C++ или Delphi. Но есть ряд особенностей. Все операции, которые выполняет программа выполняются с использованием узкоспециализированных функций из библиотеки MSVBVM60.DLL. Имена этих функций напоминают операторы Visual Basic’а, поэтому глядя на названия большинства из них, можно понять, какие операции они позволяют выполнять. Но есть и такие, которые не поддаются логике. О них я и расскажу в данной статье.

[Функции]

[Разблокирование элементов управления]

Любой элемент управления на форме может быть видимым или невидимым, доступным или заблокированным. Очень часто для взлома программы бывает нужно разблокировать отдельные элементы управления на форме. Для установки свойств объектов существует функция __vbaObjSet. Именно с помощью нее можно заблокировать или разблокировать элемент управления и изменить любое из его свойств.

Поэтому нам необходимо отлавливать вызов именно этой функции. Откроем например Olly Debugger, найдем эту функцию среди вызываемых программой и поставим на нее бряк нажав кнопку F2. Затем запустим исследуемую программу. Когда бряк сработает — посмотрите окружающий код. Если он напоминает

CODE NOW!
50 push eax
52 push edx
FFD7 call edi
8BD8 mov ebx, eax
6A00 push 00
53 push ebx
8B03 mov eax, dword ptr [ebx]

то вы на верном пути. Как вы думаете, что это за «push 00»? 00h в VB означает FALSE, а FFh TRUE, из этого следует, что данная команда устанавливает свойство в FALSE, то есть возможно это и есть блокировка элемента управления на форме. Но это может быть и установка любого другого свойства формы в TRUE. Так как синтаксис один и тот же, что принадлежность данной команды к изменению свойства блокировки можно установить только анализом окружающего кода, но умаю с этой мелочью вы справитесь сами.

[Методика взлома простейших проверок пароля]

Нижеследующий текст — мой вольный перевод статьи How to Research Visual Basic Cracking с сайта http://www.infonegocio.com/vbcrack/. За английскую версию текста спасибо ее авторам. Что нам может понадобиться? Любой дизассемблер/отладчик. Подойдет Win32Dasm или Olly Debugger Если вы используете W32Dasm, то функции, используемые программой вы можете посмотреть в меню «Functions» -> «Imports».

Если вы будете исследовать базу данных Jet, которая использует драйвера Micro$oft, то помните, что названия функции не говорят сами за себя и вам будет трудно узнать действие, которое выполняет та или иная функция. в данном случае Вам остается только смотреть рекомендации к функциям, которые любезно оставлены программистами Micro$oft. Дыр же в этих драйверах практически нет, поэтому исследовать программы для работы с базами данных довольно сложно. Рассмотрим пример защиты программы паролем. Для удобства поиска нужного кода поставим MessageBox. Откройте Visual Basic, добавьте на форму текстовое поле и кнопку, затем в обработчике щелчка по кнопке напишите следующий код:

Читайте также:
Определите при каком наименьшем целом введенном значении переменной d программа выведет число 192
CODE NOW!
Private Sub Command1_Click()
Dim XMsgBox «Testing password»
00401F5A 8D459C LEA EAX,[EBP-64]
00401F5D 8D4DAC LEA ECX,[EBP-54]
00401F60 50 PUSH EAX
00401F61 8D55BC LEA EDX,[EBP-44]
00401F64 51 PUSH ECX
00401F65 8D45CCLEA EAX,[EBP-34]
00401F68 52 PUSH EDX
00401F69 50 PUSH EAX
00401F6A 6A04 PUSH 04
00401F6C FF1508104000 CALL [MSVBVM60!__vbaFreeVarList]
00401F72 8B0E MOV ECX,[ESI]
00401F74 83C414 ADD ESP,14
00401F77 56 PUSH ESI
00401F78 FF9104030000 CALL [ECX+00000304]
00401F7E 8D55DCLEA EDX,[EBP-24]
00401F81 50 PUSH EAX
00401F82 52 PUSH EDX
00401F83 FF1524104000 CALL [MSVBVM60!__vbaObjSet]
00401F89 8BF0 MOV ESI,EAX
00401F8B 8D4DE4LEA ECX,[EBP-1C]
00401F8E 51 PUSH ECX
00401F8F 56 PUSH ESI
00401F90 8B06 MOV EAX,[ESI]
00401F92 FF90A0000000 CALL [EAX+000000A0]
00401F98 3BC7 CMP EAX,EDI
00401F9A DBE2 FCLEX
00401F9C 7D12 JGE 00401FB0
00401F9E 68A0000000 PUSH 000000A0
00401FA3 6804184000 PUSH 00401804
00401FA8 56 PUSH ESI
00401FA9 50 PUSH EAX
00401FAA FF1518104000 CALL [MSVBVM60!__vbaHresultCheckObj] ;получение содержимого Text1.Text
00401FB0 8B55E4MOV EDX,[EBP-1C]
00401FB3 52 PUSH EDX
00401FB4 FF1514104000 CALL [MSVBVM60!rtcTrimBstr] ;Trim$
00401FBA 8BD0 MOV EDX,EAX
00401FBC 8D4DE0 LEA ECX,[EBP-20]
00401FBF FF1584104000 CALL [MSVBVM60!__vbaStrMove]
00401FC5 50 PUSH EAX
00401FC6 FF1568104000 CALL [MSVBVM60!__vbaI4Str] ;CLng
00401FCC 33C9 XOR ECX,ECX
00401FCE 3DAAAA0000 CMP EAX,0000AAAA ;Число 43690 в HEX виде
00401FD3 8D55E0LEA EDX,[EBP-20]
00401FD6 8D45E4LEA EAX,[EBP-1C]
00401FD9 0F94C1 SETZ CL
00401FDC 52 PUSH EDX
00401FDD 50 PUSH EAX
00401FDE F7D9 NEG ECX
00401FE0 6A02 PUSH 02
00401FE2 8BF1 MOV ESI,ECX
00401FE4 FF156C104000 CALL [MSVBVM60!__vbaFreeStrList]
00401FEA 83C40C ADD ESP,0C
00401FED 8D4DDC LEA ECX,[EBP-24]
00401FF0 FF1594104000 CALL [MSVBVM60!__vbaFreeObj]
00401FF6 663BF7 CMP SI,DI
00401FF9 7463 JZ 0040205E ;переход на GoodBoy код (MsgBox «GoodBoy»)
00401FFB B804000280 MOV EAX,80020004
00402000 8D558C LEA EDX,[EBP-74]
00402003 8D4DCCLEA ECX,[EBP-34]
00402006 8945A4 MOV [EBP-5C],EAX
00402009 895D9C MOV [EBP-64],EBX
0040200C 8945B4 MOV [EBP-4C],EAX
0040200F 895DAC MOV [EBP-54],EBX
00402012 8945C4 MOV [EBP-3C],EAX
00402015 895DBC MOV [EBP-44],EBX
00402018 C7459418184000 MOV DWORD PTR [EBP-6C],00401818
0040201F C7458C08000000 MOV DWORD PTR [EBP-74],00000008
00402026 FF157C104000 CALL [MSVBVM60!__vbaVarDup]
0040202C 8D4D9C LEA ECX,[EBP-64]

Чтобы взломать данную программу — нужно изменить переход по адресу 00401FF9
с условного на абсолютный. Для этого меняем JE на JMP (то есть 74h на EBh).
Как видите — простенькие защиты VB программ ломаются не сложнее чем в программах, написанных на
Delphi или C++

Источник: sciencestory.ru

Visual Basic: особенности языка программирования

Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Даже несмотря на то, что появился VB более 50 лет назад, он до сих пор с успехом используется для решения определенных задач.

К примеру, с его помощью благодаря автоматической реализации некоторых механизмов можно быстро разрабатывать приложения баз данных для операционных систем от Microsoft Windows. Есть у Visual Basic и другие преимущества, хотя без недостатков тоже не обошлось. Но давайте поговорим обо всем этом несколько более подробно.

История развития Visual Basic

Язык BASIC был разработан в 1964 году. Он создавался для выполнения учебных задач, при которых обучающиеся могли бы использовать простые алгоритмы для освоения навыков программирования. Данный язык вывел образование на новый уровень, а программисты начали соревноваться между собой, создавая все новые и новые диалекты.

В число людей, начавших свою профессиональную карьеру с использования BASIC, входил Билл Гейтс, который в возрасте 13 лет написал на нем свою первую программу. В 20 лет он вместе с Полом Алленом получал свои дивиденды от реализации версии Altair BASIC.

В 80-х годах популярность BASIC стала постепенно снижаться. Разрабатываемые в то время языки уже не имели столь сложного синтаксиса, а их спектр возможностей становился все шире. Лишь Microsoft продолжал выпускать разновидности BASIC, сначала создав QBasic, а затем и Visual Basic.

На первых порах версии Microsoft Visual Basic не были столь популярны. Дело в том, что они практически не отличались от QBasic. Исключениями являлись разве что графический интерфейс и подсветка синтаксиса. Но Microsoft внесли существенные коррективы в версию 3.0.

Комплектация Professional позволяла разработчикам взаимодействовать с базой данных Access, а благодаря графическим возможностям с языком смогли работать даже те люди, которые не имели навыков программирования. Плюс ко всему, увеличилась скорость работы, а установка ПО стала значительно проще.

В 1995 году появилась Windows 95, что позволило Visual Basic 4.0. выйти в лидеры. Был создан полноценный компилятор, появилась возможность разрабатывать 16 и 32-ядерные приложения, и повысилось быстродействие.

Последняя версия традиционного Visual Basic вышла в свет в 1998 году. С этого момента Microsoft поменял стратегию, обеспечив два вектора развития языка: VB на платформе .NET и адаптированные версии для решения локальных задач (VBA, VBScript, eVB).

Основные разновидности Visual Basic

Классический Visual Basic (Visual Basic Classic)

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru