Какой аргумент инструкции open в последовательном доступе используется для открытия файла для чтения

Разрешает выполнение с файлом операций ввода/вывода.

Open путь For режим [Access доступ] [блокировка] As [#]номерФайла [Len=длина]

Параметры
путь
Обязательный. Строковое выражение, указывающее имя файла; может содержать имя каталога или папки и имя диска.
режим
Обязательный. Ключевое слово, указывающее режим файла: Append, Binary, Input, Output или Random. По умолчанию, файл открывается для доступа в режиме Random.
доступ
Необязательный. Ключевое слово, указывающее операции, разрешенные с открытым файлом: Read, Write или Read Write.
блокировка
Необязательный. Ключевое слово, указывающее операции, разрешенные с открытым файлом другим процессам: Shared, Lock Read, Lock Write и Lock Read Write.
номерФайла
Обязательный. Допустимый номер файла в интервале от 1 до 511 включительно. Для определения следующего свободного номера файла следует использовать функцию FreeFile.
длина
Необязательный. Число, меньшее либо равное 32 767 (байт). Для файлов, открытых в режиме Random, это значение является длиной записи. Для файлов с последовательным доступом это значение является числом буферизуемых символов.

Замечания
Чтобы получить возможность выполнить любую операцию ввода/вывода, файл необходимо открыть. Инструкция Open резервирует буфер ввода/вывода для файла и определяет режим использования этого буфера.
Если аргумент путь описывает несуществующий файл, такой файл будет создан при открытии в режиме Append, Binary, Output или Random.
Если файл уже открыт другим процессом и указанный режим доступа не разрешен, инструкция Open не будет выполнена и возникнет ошибка.
Если аргумент режим имеет значение Binary, предложение Len игнорируется.
В режимах Binary, Input и Random можно еще раз открыть уже открытый файл под другим номером, не закрывая его. В режиме Append и Output необходимо закрыть файл, чтобы получить возможность открыть его еще раз под другим номером.

Пример
В данном примере показаны различные способы использования инструкции Open, чтобы разрешить выполнение операций ввода/вывода с файлом.
Следующие инструкции открывают файл TESTFILE для последовательного чтения.

Open "TESTFILE" For Input As #1
' Закрывает файл перед повторным открытием в другом режиме.
Close #1

Следующие инструкции открывают файл в режиме Binary только для записи.

Open "TESTFILE" For Binary Access Write As #1
' Закрывает файл перед повторным открытием в другом режиме.
Close #1

Следующие инструкции открывают файл в режиме Random. Файл содержит записи определенного пользователем типа Record.

Type Record			' Тип, определенный пользователем.
	ID As Integer
	Name As String * 20
End Type

Dim MyRecord As Record		' Объявляет переменную.
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
' Закрывает файл перед повторным открытием в другом режиме.
Close #1

Следующие инструкции открывают файл для последовательного вывода; любой процесс может читать из этого файла или записывать в него.

Open "TESTFILE" For Output Shared As #1
' Закрывает файл перед повторным открытием в другом режиме.
Close #1

Следующие инструкции открывают файл в режиме Binary для чтения; другие процессы не могут читать этот файл.

Open "TESTFILE" For Binary Access Read Lock Read As #1

Открытие и создание файлов

Файлы перечисленных видов открываются и могут создаваться оператором Open, который вызывается так:

Open имя-файла For режим [Access доступ] [блокировка] As [#]номерФайла [Len=длина-записи]
  • Параметр имя-файла — строковое выражение, задающее имя открываемого (создаваемого) файла, в него может входить также путь ѕ имя диска и имена каталогов (папок) на пути к файлу.
  • Параметр режим — ключевое слово, которое для файлов последовательного доступа может принимать одно из значений: Input (ввод), Output (вывод), Append (присоединение). Для файлов с произвольным доступом в качестве режима нужно указать Random, а для бинарных файлов — Binary.
  • Параметр доступ необязателен, он ограничивает набор операций, которые разрешено выполнять над открываемым файлом; возможные значения: Read (только чтение), Write (только запись), Read Write (и то и другое).
  • Параметр блокировка позволяет ограничить набор операций над открываемым файлом, выполняемых другими процессами; возможные значения: Shared (разделяемый, другим процессам разрешается работать с файлом без всяких ограничений), Lock Read (запретить чтение), Lock Write (запретить запись), Lock Read Write (запретить чтение и запись). Здесь требуется некоторые пояснения. С одним и тем же физическим файлом одновременно могут работать разные приложения. Возможна и ситуация, когда одно приложение одновременно работает с несколькими экземплярами файла, присваивая каждому экземпляру свой уникальный номер. Параметр блокировка позволяет регулировать отношения между клиентами, получающими доступ к файлу.
  • Параметр номерФайла — целое число в интервале от 1 до 511, идентифицирующее файл для других операций. Для каждой операции открытия файла номер-файла должен отличаться от номеров всех открытых в текущий момент файлов. Узнать очередной свободный номер позволяет функция FreeFile.
  • Параметр длина-записи — число не более 32767 — обязателен для файлов произвольного доступа и задает для них длину одной записи файла в байтах. Для последовательных файлов он необязателен (для них он задает размер буфера, создаваемого при открытии), для бинарных файлов он игнорируется.

Если последовательный файл, открываемый в режиме вывода ( Output ), существует, его содержимое будет утеряно, и данные будут записываться в его начало. Если его нет, создается новый файл. Точно так же будет создан новый файл, если файл, определяемый параметром имя-файла, не существует, а режим открытия задан как Append, Random или Binary. При попытке открыть несуществующий файл в режиме Input будет получено сообщение об ошибке.

Последовательные файлы в режиме чтения, файлы произвольного доступа и бинарные можно открывать по несколько раз с различными номерами. С каждым из номеров будет связан свой буфер, что может повысить эффективность работы с файлом. Файл, открытый для чтения, должен быть закрыт перед его открытием в режимах записи Output или Append.

Рассмотрим детали открытия и создания файлов. В первом примере открывается файл последовательного доступа «read.me» для чтения:

Open "read.me" For Input As #1

Имя можно передавать и через переменную или более сложное строковое выражение:

Const Path = "e:\O2000\CD2000\Ch14\"

Public Sub Openfile()
	Dim NewFile As String, NewNum As Integer
	NewFile = "read.me"
	NewNum = FreeFile	' очередной незанятый номер файла
	Open Path & NewFile For Output As NewNum

End Sub

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

Файл с последовательным доступом особенно удобен, когда при работе с ним требуется последовательно прочесть и обработать все записи файла. Если же данные из файла обрабатываются в произвольном порядке, или файл открывается для того, чтобы получить доступ к небольшому числу его записей, крайне желательно иметь возможность произвольного (прямого) доступа к нужному элементу файла. Такую возможность и обеспечивают файлы VBA с произвольным доступом, хотя у них есть серьезное ограничение, все записи должны иметь одинаковый размер. Это крайне неудобно в наиболее типичном случае, когда элементами файла с произвольным доступом являются записи, длины которых, естественно, могут быть не постоянны из-за, например, наличия в них строк переменной длины. В таких ситуациях одним из выходов является переход к строкам постоянной длины. Радикальное решение, как мы уже говорили, состоит в том, чтобы в подобных ситуациях переходить на работу с базами данных. Рассмотрим пример открытия двух файлов — файла с произвольным доступом для хранения записей пользовательского типа и бинарного файла для хранения картинки. Вначале дадим объявление пользовательского типа:

Type Person ' пользовательский тип записи.
	Возраст As Integer
	Фамилия As String * 20
	Имя As String * 20
End Type

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

Public Sub OpenTwoFiles()
	Dim attr As Integer, Num As Integer
	Dim MyFriend As Person		' объявление переменной
	' Открываем файл с произвольным доступом для записи:
	Num = FreeFile
	Open "Friends" For Random Access Read Write As Num Len = Len(MyFriend)
	PrintAttr (Num)
	Debug.Print "Длина Записи:", Len(MyFriend)
	' Открываем двоичный файл
	Num = FreeFile
	Open "pict.bmp" For Binary Access Read Lock Read As Num
	PrintAttr (Num)

End Sub

Public Sub PrintAttr(ByVal Num As Integer)
	'Эта процедура по номеру файла определяет его атрибуты
	'и выводит соответствующее сообщение в окно отладки
	Dim Msg As String, attr As Integer
	
	attr = FileAttr(Num, 1)
	Debug.Print "файл # ", Num
	Select Case attr
		Case 1: Msg = "Input"
		Case 2: Msg = "Output"
		Case 4: Msg = "Random"
		Case 8: Msg = "Append"
		Case 32: Msg = "Binary"
		Case Else: Msg = "Таких файлов не бывает"
	End Select
	Debug.Print "Открыт для ", Msg
	
End Sub

14.1.

В этом примере для определения свободного номера файла использовалась функция FreeFile, а для определения длины записи ѕ функция Len. Файл произвольного доступа открыт как для чтения, так и для записи, а бинарный файл только для чтения. Заметьте, что бинарный файл закрыт для чтения другими процессами. Поэтому если повторно запустить процедуру открытия, то файл произвольного доступа будет повторно открыт с другим номером, но возникнет ошибка при повторном открытии бинарного файла. Возможность одновременного открытия под разными номерами нескольких логических экземпляров одного и того же физического файла бывает крайне полезной в ряде ситуаций.

Функция

по номеру открытого файла возвращает число, указывающее режим открытия: 1 — Input, 2 — Output, 4 — Random, 8 — Append, 32 — Binary. Второй аргумент достался функции FileAttr в наследство от 16-разрядного режима, где при его значении 2, она возвращала системный указатель на файл.

Мы написали простую процедуру PrintAttr, которая по номеру файла определяет его атрибуты и выводит сообщение в окно отладки. Приведем результаты работы процедуры OpenTwoFiles:

файл #		 1 
Открыт для	Random
Длина Записи:    42 
файл #		 2 
Открыт для	Binary

  • �������������� ����� VBA

  • ��������� ����� VBA

  • ������ � �������

  • ���������� ����

�������������� �����
VBA

�������� �������

Visual Basic for Applications (VBA) �������� ����� �������� ����������
��� ���� ���������� (Excel 5.0, Word 6.0, Mail, Power Point). VBA ���������
�������� ��������� � ������� ���������������� ������-��������� Basic (BASICA,
GW-BASIC). ��������� � ��������� ����� VBA ����������� � ������ �����
������������� � Excel 5.0.

Visual Basic for Applications (VBA)
— �������� ������� ����������� ���������������� ��� �������� ����������
�������� � ����� Microsoft Office.

� ������� VBA ����� ��������� ������� ���������� ������������
���������� ������������, �������� � �������� �������� ��������, ����������
� ��� ��������������� ����������� ���. �������� ���������������� � ��������������
������� VBA �������� � ����������:

  • �������� �������� ���������� � �������� (���������� ����, �����������,
    ����);
  • ���������� ��������, ������������ ��� ������ ��������.
  • ���������� ��������� �� ����� VBA ��������� �� ���������� ���������:
  • ������ ���������� � �������� — �������� �����, ����������� ��������
    ������ ����, � ��� ����� ��������� ����, ������� ���������, �����������,
    ����-������, ��������� ������ � ��.;
  • �������� (��������) — �������������� ��� ������� ������� ����������;
  • �������� ��������;
  • ������� — ��������, ������� ������������ �������� ����������;
  • ����� ������� — ����������� �������� �������, ��������, ������� ������������
    ������ �� ������;
  • ��������� — ������������ � �������, ������������ ������������������
    ���������� VBA; ��������� ������� �� ���������� (�����������
    ��� ����������� �������) � ����� ���������.

��������� �� ����� VBA ��� ����������, ��������������� � ����� Excel
5.0, ��������� ����� ���������:

  • � �������������� ������ ��� ��������� ���������� ��������� ������������
    (��. �������. 19.1);
  • � ���������������� ������ ����� �������� ������������ ����.

���� ��������������� ������� ������������� ���������������� �� �����
VBA ������������� � Excel 5.0.

��� �������� ������������ ������ � ������� ������� ����� ����������� ������� ���� �������,
������
� ��������� ���� ������� — ������. ��� ���� ���������
����� ������� ���� �� ����������� ������ ������ � ���������� ������� ������������ ������ � ������� �����. ��� ����������
����� ����� ��������.

��� ������ � ������� �� ����� ��������� ����� ������ ������������ Visual
Basic (���. 19.20).

���. 19.20. ������ ������������

������ ��� ������ ������ (����� �������):

<������� ������> — ��������� � �������� ������� ����� ����� �����������
������;

<�������� ����> — �������������� ����� � ������ ���� ������� �����;

<�������� ��������> — �������� ������ ��������� � ������� �������
����� ��������, �������, �������� � �� �������.

������ ��� ������:

<��������� ������> — ����� ������� ������� ��� ������� ����� ����
������� ������;

<��� �������> — ��������� ���������� ���������� ������� (��� —
���� ������ ����); .

<���������� ������> — ������������� ���������� ������� ����� ���
��������;

<0��������� �����c> — ������� ���������� ��� ������ �������;

<3������� ������> — ���� ����� ���� ������� ������ �����
������ ������� � ��� ������.

������ ��� ������:

<����� ����������> — ������������ (������) ����� ���������� ���
������ ���������;

<����������> — �������� � ���� ������� ��������� VBA ��� ����������
��� ��������;

<���� � ���������> — ���������� ��������� ������ ���� ���������
VBA;

<����� �� ���������> — ���������� ��������� ������ ���� ���������
VBA � �������������.

����� ������ ������������ ��� ������ ����� ��������� �� ����� VBA. ��������
������ (������ ��������), � �������� �������� ��������� �� ����� VBA �
����� Excel 5.0, ������������ � ����. 19.3.

������� 19.3. �������� ������� VBA Excel 5.0

��� ������

��� �������� � ������

Sheets

Workbooks

Worksheets

Charts

Range

��� ����� ����� ����� � ������� �����

��� ������� �������� ������� �����

��� ������� � ������� �����

��� ����� �������� � ������� �����

�������� ����� ������� (�����, ��������, ��������� �����,

���������� ��������� )

������ � ���������� ������ �������������� ����� ���������:

1) �� ������ ����������

������ 19.5.

W�rkbooks(» ���_�����»). Worksheets(2)

2) �� ����� ����������

������ 19.6.

Workbooks(«���_�����»).Worksheets(«���-�����»)

������ �������� ���������� ����������:

  • Count — ���������� ����� ����������� � ������;
  • Name — ���������� ��� ����������;
  • Parent — ���������� ��� �������, ����������� �����.

��� ���������� � �������� ����������� ������ ���������� ������ Add� Delete.

��������� ������ ������� �������� ����� ������ Range � ��������� ������:

1.Cell — � �������� ���������� ����������� ��� ����� �����, ������������
����� ��������� ��������� ������ ������� — Cell (�����1; �����2)

������ 19.7.

Cell(l;2).Value=5

����������� ������ �2 �������� �������� ����� �������� ������� �����
�������� 5;

Cells(2,l).Formula=»=SUM(Bl:B5)»

���������� � ������ �2 ������� ������������ �������� � ������� �1:�5.

2.Range — ������ � ������������� �������� �����, � �������� ����������
������������ ���� ��� ��� ������ �� ������ ������� � ����� �1:

Range(«A2″;»G10»)

Range(«f4»)

���� �� ���� ����� �� �� �����.

������19.8.

Worksheets(«PRIMTR»).Range(«Al0″;»F12»).Value=10{/p>

���������� ����� ����� ����������� �������� 10.

Range(«D15»).Value = «Test»{/p>

���������� ������ �������� �������� ����� �������� ������� ����� ��������
«Test».

Range(«Criteria»).ClearContents

������� ����������� ������������ ����� ����� �������� �������� �����
�������� ������� �����.

����������. ����� ������������ ����� ������ Range(Cells(1;1); Cells(2;2)).

3.Offset � �������� ���������� ���������� ��� �����, ����������� ��������������
������ ������������ �������� ������ ���� ��������� �������. ��� ������
�������� � �������������� �������� ������������� ���������� ������ �����
��� �������� ������.

������19.9.

Selection.Offset(2,5).Select

������������ ������� ������, ��������, �1, ���������� �������� � ������
F3.

[«�����_������»] — ������� ������ �� ������ �� �� ������.

4.Union — ����� �������������� ��������� �������� ����� — Uni��(�������1;
�������2).

������ ������� ��������� � ������� ������ Range.

������ 19.10.

Union(Range(Cells(1;1); Cells(2;2)); Range(Cells(5;5); Cells(7;7)).Select

�������� ������� �����: �1:B2,E5:G7.

���������� ���� ������

VBA ���������� 11 ���������� ����� ������ (����.19.4).

  • Boolean ���������� 2 �����, ��� 16 ���, ������ ��� �������� ���������� ������;
    ����� ��� ��������� ��������: True � False.
  • Integer ���������� 2 ����� ������ ��� �������� ����� �����, � ��� ����� 1
    ��� ��� �������� ����� �����, 15 ��� — ��� �����.
  • Long ���������� 4 �����, ��� 32 ����, ������ ��� �������� ������ ����� �������
    ��������, � ��� ����� 1 ���, ��� �������� ����� �����, 31 ��� -��� �����.
  • Single ���������� 4 ����� ��� ����������� �������� �������� (�������� �����
    ����� — �������� 7 ������) � ������� (������������ ���������� �����).
  • Double ���������� ������ ��� ����������� �������� �������� (�������� 15 ������)
    � �������.
  • Currency ���������� ������, ���������� ����� ������ ������������� ����� 4
    � 5 ������� ������, ������������ �������������� ���������� �����������
    ����������.
  • Date ���������� ������ � ������������ ��� �������� ��� � �������.
    ���� ������������ � ���� ����� ����� ����, � ����� — ��� ������� �����
    ���.
  • String ���������� 1 ���� ��� �������� 1 ������� ���� 1 ����
    ��� ������� ����� ������. ������� �������� � ���� ����� ANSI.
  • Object ���������� 4 ����� ������ ��� ������ �� ����� ������ Visual Basic.
  • Array ���������� ������ ������ ������ ���� � ����� �����������.
  • Variant ������������ ������, ����� ���� �� ������ �����-���� ������ ���;
    ����� ��������������� ������ ������� ������������ ���� ������.

������� 19.4 ���������� ���� ������ VBA

��� ������

������ ( � ������)

������-�����

(����)

��������

Boolean

Integer

Long

Single

Double

Currency

Date

String

Object

Array

Variant

2

2

4

4

8

8

8

1+1

4

������� �� ����� ��������� � �� �������

������� �� ����� ������

1

5

10

7

15

19

True, False

-32768; 32768

-2147483648; 2147483648

-3.402823E+38; 1.401298E-45 � 1.401298�-45 ;

3.402823�+38

-1.79769313486232�+308; -4.94065645841247�-324 �

4.94065645841247�-324; 1.79769313486232�+308

-922337203685477.5808; 922337203685477.5808

01.01.100; 31.12.9999

0; 65535

����� ������������ ������

����� ���������� ��� ������

����������

���������� ���������� �������������
������� � ������ ���������� �� ����� ���������� ���������.

���������� ������� ������ ���������� ������ �����, ������� �������� ���������-��������
������� � ����������� �����. ��� ������ ���������� � ����� � ������������
����� ����������� ������������������ ��������, �� �� ����� 255 � �� ��������
����������� ��������.

������ 19.11.

����������� ��� ����������

������������� ��� ����������

�����������

������; ������;

EXAMPLE; example

 

��� �������� ��������� � �������� ����, ��������� � �������� �
��������� ����

��������_������_1_�������;

Tax_off_1_class

 

��� ��������� ��������� ���������� ����� �������� �� ���������
����, ����������� ������_

 

�������� ������ $; #room;

Class&subclass

������ ������������ ������� � ����� ����������, � ����� �����������
������� ����: #$%&!

��������� �� ����� VBA ����� ��������� ��������� — ������� ������,
� ������� �������� ��������� ������, ���������� ���� ��� ����� ���������
��������.

������ ���������� ����� ������������ ��� �������� � ����� ��������, �
��������� ������ �� ������������� ��� Variant. �� ���. 19.21 ��������
����� �������� ����������.

���. 19.21. ����� �������� ���������� � ��������� �� ����� VBA

����������, ����������� ������ � ���������, ��������� � �������� ���������.
���������� ���������� �� ������ .������ ������ �� ��������� ��� ���� ��������
������. ��� ���� ����������� ��������������� ����� ���������� �� ���������
����������. ��� ������������� ���������� �� ���� ��������� ����������
� ������� ��� ����������� ���������� �� ������ �������� ������ (��������,
���������� Var0 �������� ���� ��������� ������� � �� ����������).

������ 19.12. ���������� var4 var5 ������������ ������ � ����� ����������.
���������� var2 ��������� � ���������� 1 � 2. ��� ������������� ���� ���������
���������� � ���������� ������ � ����� ������ �������� (��� ����� ������
�������� �/��� ���� ������, ���������� ���� �� �����). ���������� �� ������
������, var1 — � ������ 1 � var3 — � ������ 2. ������������ �� ���� ���������
� ������ ����������. ���������� var1 �������������� � ��������� 1, ��
��������� ���� �������� � ��������� 2; ���������� var3 ��������������
� ��������� 3.

���������� � ������ ����������� � ������� ���������� ��������� �����:

  • ��������� ����������

Dim <var> As <type>, <var> As <type>, <var> As <type>, . . .

���������� ����������

Public <var> As <type>, <var> As <type>, <var>
As <type>, . . .

��� <var> — ��� ����������;

<type>- ���������� ��� ������ ����������.

������� ����������

������� ���������� ����� ������������ ����������� — ����������, ����������,
���������� � �.�, ����������� ���������� �����������:

  • ��������� ������

Dim <Arr> (�����������) As <type>

  • ���������� ������

Public <Arr> (�����������) As <type>

��� <Arr> — ��� �������,

(�����������) — ����������� �������,

������ 19.13.

����������� �������

����������� �����������

����������� � �������

����������

(�����)

Dim Ball (5) as Integer-6 ��������� �������, ������ ��������� ����������
� 0

 

(�����1 To �����2)

Dim Basket (45 To 74 ) as Single-30 �����- ���� �������

����������

(�����1, �����2)

Dim Foot (1, 3) as Long- 8 ��������� �������:

Foot (0, 0) Foot (0, 1) Foot (0, 3) Foot (0, 3)

Foot (1, 0) Foot (1, 1) Foot (1, 2) Foot (1, 3)

 

����������

Dim Cross (1, 4 To 5) As Date-4 �������� �������: Cross (0, 4)
Cross (0, 5) Cross

(1, 4) Cross (1, 5)

����������

(�����1, �����2, �����3)

Public Game (2, 2, 3) As Single- 36 ���-������ �������:

Game (0, 0, 0) Game (0, 1, 0) Game (0, 2, 0)

Game (0, 0, 1) Game (0, 0, 2) Game (0, 0, 3)

Game (0, 1, 1) Game (0, 1, 2) Game (0, 1, 3)

Game (0, 2, 1) Game (0, 2, 2) Game (0, 2, 3) � �.�.

���������������� ���� ������

�������� Type ��������� �� ������ ������ ���������� ����������������
��������� ������, ���������� ������ �����������, ��������� ���������
����������, ��������:

[Private] [Public]Type<typename>

< elementname 1 > As <type>

< elementname2> As <type>

End Type

��� <typename> — ��� ����������������� ���� ������;

< elementname> — ��� ������������ ���������.

� ������ � ������� ���������� Dim ��� Public ���������� �������� ����������,
������������ ���������������� ��� ������. ��� �������, ��� �������.

������ 19.14.

Type Student

FullName As String *20

Group As Single

BrithDay As Date

Hight As Integer . . .

End Type

Dim Student_Card (1 To 1000) As Student

��� Student ������ ��� ���������� ������� Student_Card ������������ 1000
���������, ��������� ������ ��������: �������, ���, ����� ������� ������,
���� ��������, ����.

���������� ��������

��������� — ��������, ����������� ���������� �������� �� ����� ����������
���������, �� ���������� �� ������� ������������.

��������� ��������� � ������� ���������:

Const <const> = <��������>

��� <const> — ��� ���������;

<��������> — �������� ���������.

��� �������� ���������� ������� ����� ��������:

  • ��������� ��������� ����� �������� ����� Public:

    Public Const Datel=#12.12.96#

  • ��������� ���������:

    Const Date2=#12.12.97#

    ��������� ��������� ����������� � �������� ��������� ��� ������, ����������
    ��������� — �� ������ �������� ������ � �������� ��� ���� ���������
    ������� � ��������.

    VBA ����� ���������� ���������, ������� ��������� ��� ������������
    ���������� � ���������� � �������� vb. Excel 5.0 ����������
    ���������� ���������, ������������ ��������� xl.

    ��������� ����� VBA

    �������� ������������

    ������ ��� ��������� ������ ��� ���������� ��������� ��������, ������
    ���������� ���������� � ����������, ��������� ��������.

    �������� ������������ ����� ��������� ��������� ����������:

    <var>= <formula>

    ��� <var> — ��� ����������;

    <formula> — �������.

    ���������� ����� �� ����� «=» ����� ���� ������� ����������,
    ��������� ������� ��� ��������� �������. ������� ������� �� ����������,
    ��������, �������� � �������.

    ������ 19.15.

    Place=»d:\windows\system»

    File=»GameTree.Exe»

    Student_Card(100).Group= 133

    � ������� ��������� ������������ ����������� ���������� ����������
    �� ������� � ������ ������ — ��� ������ ����������.

    VBA ���������� ��������� �������� ��� ���������� ���������, ��������
    ������� �������� ����� ������������ ��������� (�����������) ����������
    (����. 19.5).

    ������� 19.5. �������� �������� ����� VBA

    ��������

    ��������

    ���������

    ��������

    ��������

    ���������

    �������� ��� ���������� ������

    ^

    ���������� � �������

    1

    Mod

    ������� �� �������

    5

    ��������� ( ��)

    2

    +

    ��������

    6

    *

    ���������

    3

    ���������

    6

    /

    �������

    3

    &

    ����������� (�����-�������) �����

    7

    \

    ������� ������

    4

         

    �������� ���������

    =

    �����

    >=

    ������ ��� �����

     

    <>

    �� �����

    Is

    ��������� ( ������ ��� ��������, ������ � ����������������� ������
    Null ������������ ��� ��������, �������� �� �������� ������)

     

    <

    ������

    Like

    ������������� �������� ��� ������ � ���������

     

    <=

    ������ ��� �����

    Between� And

    ��������� �������������� ��������� ������-���� ��������� ��������

     

    >

    ������

    In

    ��������� ��������� �� ���������� � ����� �� ��������� � ������

     

    ���������� ����������� � ������� �������� (��� ������ �����, ��� ������
    ��������� ��������). ��� ��������� ������������� ������� ����������
    �������� ������������ ������� ������.

    ������ 19.16.

    Disct=(S — P)/(dt)^2

    ������� ����������� �������� S — �, ����� ������������ dt ����������
    � ������� 2, ����� ����� ����������� ������� �� �������; ����������������������
    ���������� Disct.

    �������� ������������

    ����������� — ��� ��������� � ���������. ����� ����������� ����������
    � ������ � ������������� ����� ��������� �������� ‘. ����������� �������������
    ��� ������������� � ��������� ��������. ��� �������, ���������� � �������������
    �������� �������������� ���������� �������������. ����� ������������
    ������ ���������� ��������� ������ ���������, �������� �� ���������.

    ������ 19.17.

    ����� ���������

    �����������

    Option Explicit �������������� ���������� ���� ���������� � ������
    ����� �� ��������������
    Sub ����_�����( ) ��������� ��������� ��������� ����� � ���������� �������
    ����������� ������� Excel 5.0
    Dim numrows As Integer; numcols As Integer
    Dim therow As Integer; thecol As Integer
    ���������� ����������
    numrows=Selection.Rows.Count
    numcols=Selection.Columns.Count
    ���������� �������� ����� ����� � �������� � ����������
    ������� ����������� �������
    Randomize ������ ���������� ��������� �����
    For therow= 1 To numrows ����������� ����� ���� ForNext, ������� ����
    For thecol= 1 To numcols ���������� ����
    Selection.Cell( therow; thecol).Value=Rnd{/td> ������������ ������� ������ ���������� �����
    Selection- ����� ������
    Cell- ����� ������� � ������ � ������������� ������������
    Value- �������� «��������»
    Next thecol ����� ����������� �����
    Next therow ����� �������� �����

    End Sub

    ����� ���������

    ���������

    ����������� ������ VBA ������� �� �������� (����� ��� �����).

    ��������� — �����������
    ������ � ������� ���������� ��������� �� ����� VBA.

    ��������� ����� ����������� ����������:

    Sub <���_���������> (���������)

    ���� ��������� (���������)

    End Sub

    �������� Sub ���������� ���������, �������� ���,
    ����������� ������ ����������, ������������ ��� ������ ��������� �� ���������. ������� ���������
    Sub ����������� ������������� End Sub.

    ���� ��������� — ����� ��������������� ����������� ���������� �� �����
    VBA. � ��������� ����� �� ������ ������������ ��������� ������� ������������
    ������, �� � ��������� �� ��������� ������ ������� ������� ������� �����,
    � ����� ��������� ������ ������� ����. ��� ����� ���������� ������ ������;
    ��� ���������� �� ������� ����� ������ ����������� ������� ������,
    ������.
    � ���������� ���� «������» ������� ������ ���������
    ������ �� ���������� ��� ������ ������� �����.

    ��� ������������ ����� ������ ���������� ������ ������ <����������>
    � ������� ���������� ���� ��� ������ �����, �������� � �����, �����������
    ���������, �� ������� �������� ������ �� ������� ������������ ������.
    ����������� �������� ������������� ������������ ������ ��� ����������
    ����������� � ������� �������������.

    ��������� 4 ���� ��������:

  • ��������� ������ ���������� (�����������), ��� �������, �� ������ ���������
    ��� ����;
  • ��������� ��������� ��������� ����������� ���������� ��������, ��������
    ����� ���� ���������;
  • ��������� ��������� ������� ����������� ��� ����������� ������� �������������
    ���� (��������, �������� ��� �������� ����������� ������� Excel, �������
    ������, ����������� ������� � �.�.);
  • ������� ������������, ������������ ����������� ��������, ������� �����
    ���� ������������ �� �������� � ������� ���������� ������� VBA.

    ���������� ��������� ��������� ������ �������� (��� ����������� ������
    �� ��������������� ��������� ������� �������������).

    1. �� ������ ��������� ���� �� ������ ����� ��������������
    �� ����� ���������

    Sub �r��_� () ‘ ���������� ��������� �r��_� ()

    �r��_� ‘ ����� ��������� �r��_�()

    End Sub ‘ ���������� ������ ��������� �r��_� ()

    Sub Proc_B () ‘ ���������� ���������

    End Sub ‘ ���������� ������ ��������� Proc_B ()

    2. �� ������ ��������� ������� (�������������) ������
    ����� �������������� �� ����� ������, ����� ��������� (� �������� ������
    ����������)

    Sub �r��_� () ‘���������� ��������� �r��_� ()

    [������#].�r��_� ‘ ����� ��������� �r��_�() ������ ������#

    End Sub ‘ ���������� ������ ��������� Proc_A ()

    3. �� ������� ���������� (������ ������� ����� ��� Excel 5.0)
    — ����� �������������� �� ����� ������, ����� ��������� � ����� �������
    �����

    Sub �r��_� () ‘���������� ��������� �r��_� ()

    [RWl.XLS].[������#].Proc_B ‘ ����� ��������� �r��_�() ������

    ‘������# ������� ����� RW1.XLS

    End Sub ‘ ���������� ������ ��������� �r��_� ()

    ����������. ���� � ���������� ������� ������ ������� ��� �������� � ������������
    ������, ������� ������� ��� ����� ������� ����� � ��� ������ � ����
    ����� ��� ������ ���������.

    ����� ������������� ������ � ��������� �� ������ �������, ���������
    ������ �������. ��� ����� � ��������� ��������� ������� �������:

    Private Sub Proc_B ()

    End Sub

    ��� ������ ������ ������� ����� �� ������� � ���� �� �������� ������
    ������� ����� � ������ ������ ���������: Option Private Module

    ���� � ������ ������ ��������� ���������� �����-�� �������� ���� ��������
    ��� �� ����������, ���������� ������ ����������, ������� ��������
    ������ ������ � ���������� ����������.

    � ���� ��������� ����� ���� ��������� ���������� ����������,
    ������� �� �������� ��������� ������ � ���������� ����������, �����
    ���������� �� ����� ���������� ��� �������� ���������� ���������.

    ���������� ���������� � ��������� ��������� ����� ����������� ���:

    Sub Proc_B (Val 1 As Single; Val 2 As Date;…)

    ����� ��������� ����������� ������� (� ����������� �� ��������� Windows
    — ������� ��� ����� � �������) ������� ��������� � ��������� ����� �
    ���� ��������.

    ���� �������� ��������������, �.�. ����� �� ���������� ��� ������ ���������,
    ����������� �������� ����� Optional.

    ������ 19.18. ��������� ���������� ������� �������������� �� ���� ��������

    ����� ���������

    �����������

    Sub SquarPr (L As Single; H As Single; S As Single;
    Optional F)
    ���������� ��������� SquarPr � �� ����������

    If IsMissing( F) Then F=100

    ���������� ������� VBA- IsMissing ��������� �������
    ��������� , ���� F �� ������, �� ��������� F ������������� ��������
    100 ( F ����� ��� Variant )
    S=L*H ���������� ������� ��������������

    End Sub

    ����� ���������

    ����� ����� ��������� ����������� ��������� �������.

    1-� ������� — ���������������� ������� �������� ���������� ��� ������
    ���������

    ����� ���������

    �����������

    Sub Proc_A ( )
    Dim Sq as Single
    ���������� ���������
    SquarPr 12; 23; Sq ����� ��������� � ��������� �������� ���� ������ ��������������
    � ����� ����, ��������� ���������� ����� �������� ���������� Sq

    End Sub

    ����� ���������

    2-� ������� — ����� ����� ����������, ������� ��������� ��������

    ����� ���������

    �����������

    Sub Proc_A ( ) ���������� ���������
      ���������� ����������
    Dim Sq as Single �������
    Dim LL as Single �����
    Dim HH as Single ������
    LL=12
    HH=23
    ���������� �������� ����������
    SquarPr LL HH Sq ����� ��������� � ��������� �������� ���� ������ ��������������
    � ����� ����, ��������� ���������� ����� �������� ���������� Sq

    End Sub

    ����� ���������

    3-� ������� — ������������� ������ ������������� ���������� ��� ������
    ���������

    ����� ���������

    �����������

    Sub Proc_A ( ) ���������� ���������
      ���������� ����������
    Dim Sq as Single �������
    Dim LL as Single �����
    Dim HH as Single ������
    LL=12
    HH=23
    ���������� �������� ����������
    SquarPr L:=LL; H:=HH; Sq ����� ��������� � ��������� ������������ ���� ����������
    ���������� ���������, ������� ����������� � ������ ������ :

    End Sub

    ����� ���������

    ��� ���������� ������ ���������� ��������� � �������� ���������� ����������
    ��������� ���������� ������ �������� ����������, ����������� � ����������
    ���������.

    ��� �������������� ����� ����������� ���������� ������� ��������� ����������:

    Static <var> As <type>

    ������ ��� ������ ��������� ���������� �������� ������, ��
    �������� ��������� �������� (����� ������������� ����� ����������).
    ��������� ����� �������� �������� ���������. ��� ���������� ���������
    �������� ��������� ������� �������� ������� ���������. ��� �����
    ����������� ���� ����������� ��������� ���������, ���� ��������
    ���������� � ���� �������.

    ��� ����������� ��������� ��������� ����������� �������� ���������
    ����� By Val ����� ������� ����������, �������� ������� �� ��������� ������ ���������.

    ������ 19.19.

    Sub SquarPr (By Val L As Single; By Val H As Single; S As Single)

    S=L*H

    L=10

    H=20

    End Sub

    ��� �������������� ��������� � ���� ������� ��� ������ ���������
    ��� ���������� ����������� � ������� ������.

    ������ 19.20.

    ����� ���������

    �����������

    Sub Proc_A ( )

    Dim Sq as Single

    Dim LL as Single

    Dim HH as Single

    LL=12

    HH=23

    SquarPr L:=(LL); H:= (HH); S:= Sq

    End Sub

    ���������� ���������

    ���������� ����������

    �������

    �����

    ������

    ���������� �������� ����������

    �������������� ��������� � �������

    ����� ���������

    ���������� ������� VBA

    ���������� ������� VBA
    ������������ ������� ���� ��������� ������, �������� ������������ ��
    ���������� ����������� ��������. ������� ����� ���������, �
    �������� ������� ������������ ����������, ���������, ���������. ���
    �������, ���������� ������� VBA (����. 19.6) ���������� ��������� ��������
    (�� �������).

    ��������� ���������� ������� VBA ����� ��� �������� ����������, � �����
    ������ ������������ �������� ���� Variant, � ������ — ���� String. ���������������� ������������ ��������� ��� ������ (String), ����:

    �� ������� ��������� ������������ ����� ����������;

    ���������� �������� ���������������;

    ������� ������������ ��������������� � ���� ������� �������.

    ��������� ���������� ������� VBA ���������� �������� � ���� ������
    ��������, ���� � ����� ������� �������� ������ — $, ��������� ����������
    ������� ����� ���������� ������ � ������� ����������, ��� � ��� �������
    $:

    Chr$� Oct$ CurDir$ Right$ Date$ RTrim$ Dir$
    Error$ Space$ Formats$ Str$ Hex$ String$ Input$
    Lcase$ Trim$ Left$ UCase$ Ltrim$ Seek$ Mid$
                Time$

    ������� 19.6. ��������� ���������� ������� VBA

    ��������� ���������� �������

    ������� �������

    ��������������

    ABS()-���������� �������� �����;

    RND()-��������� �����;

    INT()��������� ����� ����� �����;

    ������������������ ������� � ��.

    ���������

    LCASE()-�������������� � �������� ����� ������ ��������;

    UCASE()-�������������� � ��������� ����� ������ ��������;

    LEFT()-��������� ��������� �����;

    RIGHT()-��������� ��������� ������;

    LEN()-����������� ����� ������ � ��.

    ���� � �������

    DATE()-������� ������� ��������� ����;

    CDATE()-��������������� ��������� � ������ ����/�����;
    TIME()-������� �������� ���������� �������;

    NOW()-������� ������� ���� � �������� ������� ( �� ����������);

    DAY()-������� ������ ��� ����;

    MONTH()-������� ������ ������ ����;

    WEEKDAY()������� ������ ��� ������;

    YEAR()-������� ������ ���� � ��.

    �������������� ����� ������

    CINT()-�������������� ��������������� ����� � ����� ( � �����������);

    CSTR()-�������������� ����� � ������ ��������;

    CVAR()-�������������� � ��� ������ VARIANT;

    FORMAT()-�������������� ������ ���� ����, �����, �����, ������
    ��������
    ��� ������ ��� ������ � ����;

    STRCOMP()-��������� ���� �����;

    VAL()-�������������� ������ �������� � ����� � ��.

    �������� �������

    FILEATRR()-������� ��������� �����;

    FILEDATETIME()-���������� ���� � ����� �������� (�����������
    ) �����;

    FILELEN()-���������� ����� ����� � ������;

    FREEFILE()-���������� ��������� ��������� ����� ��� ������ �
    ������ � ��.

    ������� ������������

    �� ����� VBA ����� ��������� �������
    ������������
    ,
    �������, � ������� �� ���������, ����������
    ����������� �������� (����); ��� ����� ����������� � ���������� ���������
    ������������.

    ��������� ������� ������������ ����� ���:

    Function <���_���������>(���������) As <type>

    ���� ��������� (���������)

    End Function

    ��������! ��� ������� ����������� ��� ������������ �������� — As <type>. �
    ���� ������� ������������ �������� ������������ ������������ ��������
    ����� �������.

    ������ 19.21. ������������� ���������������� ������� ����������
    ������� ��������������

    ����� ���������

    �����������

    Sub Proc_A ( )

    Dim S as Single

    Dim LL as Single

    Dim HH as Single

    LL=12

    HH=23

    S=Sq(LL; H)/2+1200

    End Sub

    Function Sq (H As Single; L As Single As Single)

    Sq=H*L

    End Function

    ���������� ���������

    ���������� ����������

    �������

    �����

    ������

    ���������� ��������

    ����������

    ������� ������ ������� Sq

    ����� ���������

    ���������� ������� Sq � �����������

    ���������� ������� Sq ���������� ����������

    ����� �������

    ����������� ���������

    VBA ��������� � ��������� ������ ������������ ���������������� � ���������
    ������������ ����������� ����������� ���������, � ������� ���������:
    �������� ��������, �������������� �������, �����.

    �������� �������� If. �������� ����� �������������� � ���� ��������: � ���� ������� � �������
    ��������.

    �������� ������� ��������� ����� ��������� ������ ������:

    If <���������> Then <��������>

    ������ �������� ������������ �������� ��������� (�������). ���� �������
    ������� (True), ����������� ������� ��� ��������� ��������, ��������� �� ������ Then; ���� �������
    ����� (False), ���������� ���������� ���������� �� If ���������.

    ��������� �������� — ������������������ ���������� ����� ������, �����������
    ������ : (���������).

    ��� ���������� ��������� � ������� ���������� ����������� ���������
    ������� ���������� ������������ ������������ �������.

    ������ 19.22.

    If MaxPrice > 23,000.00$ Then MaxPrice=23,500.00$

    If Student_Card(100).FullName Like «��*» Then number=Sludent_Card
    (100).Group

    ��� ���������� ��������� ���������� ����������� ������� ����������
    �������� VBA.

    ���������� ��������� ����� ���� ��������� � ������� ����������� ����������
    �������:

    �������

    ��������

     

    �������

    ��������

    Not

    And

    Or

    �������� ��� ���������

    ���������� «�»

    ���������� «���»

     

    Xor

    Imp

    Eqv

    ����������� «���»

    ����������

    ���������������

    �������� If ������� ��������� ����� ����������:

    If <��������� 1 > Then <���� ���������� 1>

    �lseIf <���������2> Then

    <���� ����������2>

    ElseIf <���������3> Then

    <���� ����������3>

    [Else

    <���� ���������� Else>

    End If

    ��������������� ����������� �������� ���������� ���������. ���� ���������1
    �������, ����������� ���� ����������1, ����� �����������
    �������� ���������� ���������2 � �.�.

    ���� �� ���� �� ��������� �� ������������� ����������� ����������,
    ����������� ���� ���������� Else, ���� ��� �������,
    ����� — ��������, ��������� �� End If.

    ������ 19.23. ����������� �������� ������� ������� ����������
    ��������� If

    ����� ���������

    �����������

    If AvgPrice >12000 Then

    DiffPrice=Full(234, 45600)

    �������� ������� 1

    ���� ������� 1 �������, ����� ���������

    ElseIf AvgPrice > 24000 Then

    DiffPrice=Full ( 12000, 45000)

    ElseIf AvgPrice > 36000 Then

    DiffPrice=Full ( 24000, 50000)

    Else

    DiffPrice=Full ( 36000, 70000)

    End If

    �������� ������� 2

    ���� ������� 2 �������, ����� ���������

    �������� ������� 3

    ���� ������� 3 �������, ����� ���������

    ���� ������� 1-3 �� �����������,

    ����� ���������

    ����� ����� If

    �������� ������� Select Case. ������ �������� ����������� � ��� ������, ���� �� ���� ���������� ��������
    ��������� ���� � �� �� �������� (����������):

    Select Case <��������>

    Case <��������� 1>

    <���� ���������� 1>

    Case <���������2>

    <���� ����������2>

    [ Case Else

    <���� ���������� Else> ]

    End Case

    ��������� ��� ��������� ����� ���� �������� � ����: Case 45 ��� Case 3, 4, 5, ��� Case
    5 �� 12.

    ���� �� ���� �� ��������� �� �������� ��������, ����������� ���� ����������
    Else, ���� ���� Else �����������, ���������� ���������� ���������, ���������� �� End
    Case.

    ������ 19.24. ����������� ���������������� �������� ��������
    ����������

    ����� ���������

    �����������

    Select CDemse

    ������ ������ ��������� Select, ���������� ����� ����������,
    ��� ������� ����������� ����������� ��������-Demse

    Case Demse 21

    ������ ���������

    Dem=21

    ���� ������ ��������� �������, ����������� �������� ������������

    Case Demse 22; 25; 28

    ������ ���������- ������ ������ ��������� ��������

    Dem=31

    ���� ������ ��������� �������, ����������� �������� ������������

    Case Demse 45 To 48

    ������ ��������� �������, ����������� �������� ������������

    Case Else

    ���� �� ����������� �� ���� �� ��������� ���������

    Dem=51

    ����������� ������������

    End Case

    ����� ��������� Select

    �������� ����� ForNext. ������ �������� ��������� � ��������� ����������� ������, �����
    �������� ������� ����� ���������� �����, ������ ���������, ��������
    �������� � ��� (����������) ��������� ���������� ��������, �.�.:

    ��� ������� �������� ���������� ����� ����� ����������� ���� ����������,
    ������������� �� ��������� ����� Next. ����� ���������� ���������
    ���������� ����� (���������� �������� �� ���), ����������� ����������
    �������� (�� ����� ���������� ��������� ��������) � ����������� ����������
    ����� ����������.

    ���� ���������� ����� ��������� �������� �����, ����������
    ���������� ���������, ���������� �� ������ Next.

    � ���� ����� ����� �������������� �������� Exit For. ��� ���������� ����� ��������� ������������ ���� � ���������� �����
    ���������� ���������, ���������� �� ������ Next. ���� ForNext ����� ���� ���������.

    ������ 19.25. ����������� ������ � �������������� �������� ����������

    ����� ���������

    �����������

    Sub stickRandom() ���������� ����� ���������
    Dim numrows As Integer; numcols
    As Integer
    Dim therow As Integer; thecol As Integer
    ���������� ����������
    numrows=Selection.Rows.Count ����������� ����� ����� � ���������� ����� �����
    numcols= Selection.Columns.Count ����������� ����� �������� � ����������
    ����� �����
    Debug.Print numrows; numcols ������ ����� ����� � �������� � ���������� ����� �����
    Randomize ��������� ��������� �����
    Debug.Print Rnd ������ ���������� �����
    For therow=1 To numrows ������� ���� �� ����� ����� � ����� �����
    For thecol=1 To numcols ���������� ���� �� ����� �������� � ����� �����
    Selection.Cell(therow; thecol).Value=Rnd{/td>

    ������������ ������� ������ ���������� �����

    Selection-����� ������
    Cell-����� ������� � ������ � ������������� ������������
    Value — �������� «��������»

    Next thecol ����� ����������� �����
    Next therow ����� �������� �����

    End Sub

    ����� ���������

    ���� DoLoop. ��������� ����������� ����, �������� Do Loop — ����� �����; ����� 4
    �����������:

    1) ������� True � ������ �����

    Do While <�������>

    <���� ����������>

    Exit Do

    <���� ����������>

    Loop

    ���� ����������� �� ��� ���, ���� ������� <�������>.
    ����������� ����� ���������� ���� ����� — 0. �������� Exit Do ������������ ��� ����������� ����� � �������� ���������� ���������
    Loop — ����� �����.

    2) ������� True � ����� �����

    Do

    <���� ����������>

    Exit Do

    <���� ����������>

    Loop While <�������>

    ���� ����������� ���� �� ���� ���, � ����� ����������� �������� <�������>.

    3) ������� False � ������ �����

    Do Until <�������>

    <���� ����������>

    Exit Do

    <6��� ����������>

    Loop

    Until ���������, ��� ���� ����������� �� ��� ���, ���� <�������>
    �� ������ ��������. ����������� ����� ���������� ���� ����� — 0.

    4) ������� False � ����� �����

    Do

    <���� ����������>

    Exit Do

    <���� ����������>

    Loop Until <�������>

    ������� ����������� � �����, ���� ������������, ����� ������� ������
    ��������. ����������� ����� ���������� ���� ����� — 1.

    ������ 19.26. ���������� ��������� ����������� ������

    ����� ���������

    �����������

    Option Explicit �������������� ���������� ���� ���������� ����� ��
    ��������������
    Sub Do_Rnd() ���������� ����� ��������� ��� ����������
    Dim a As Single
    Dim i As Integer,
    ���������� ����������
    Randomize ������ ���������� ��������� �����
    Do While True ������ ����� Do. ������� ������� ���������� �����-
    ���� �����������
    a=Rnd ���������� ���������� ��������� �����
    Debug.Print a ������ ���������� �����
    If a>0.99 Then Exit Do ���� ������� — ��� ��� ���������� ����� �� �����
    Loop ����� �����
    End Sub ����� ���������

    ���� While-Wend. ������ �������� ��������� ������������� ���������
    Do WhileLoop. ������������� ������������ ��������� �������� ������������� ��������
    ���������� ����� �� ���� ����� (Exit Do �����������), �������� ������� ����������� ������ � ������ �����.

    While <�������>

    <���� ����������>

    Wend

    ����For Each. �������� ��������� � ��������� ���������� ����������
    ����, �.�. ����������� � �������� (���������) � ������� ��������. �����������
    ������������� ����� ���, ����� �������� � ������ ������������ �������������. ������������ ��������� ������ — ������������.

    For Each <�������> In <�����>

    <���� ����������>

    Exit For

    <���� ����������>

    ��� <�������> ������������ ����� ���������� ���� Variant, <�����>
    — ������������ ����� ��������. ��� ���������� ����� ������������ ��������
    Exit For.

    ������ � �������

    �������� �������

    VBA �������� � ��������� �� ����� ������� ���� �����: �����������������
    � ������������� �������.

    ���������������� ����
    ���������, ������� �������������� ������������ ����������
    ��������� ����������, ��� ��� �������� ������ �������� � ������� ANSI.
    ��� �������� � ����������������� ������� ����������� �� ������ �����:
    ��� ���� ������������ ������ ������ � ������ � ���������������� ����.

    ���� �������������
    �������
    ����� ������ ������������� �����: ����� ������������
    ��������� ������ � ������ � ���� �������.

    �������� �����

    ��������� ����� ��� ������������ �� �����, ��� � ����� �����. ������
    ���� ���������������� � ��������� ������������ �������, �������
    ������������� ��� � ������ ��������. ��������� ����� ����� ����� ����������
    � ������� ���������� ������� FileFree, ������� ����������
    ��������� ��������� ����� ��� �������� ����� (����� ���������� � ���������
    1 — 511).

    ���� ��������� � ������������ ������ ������:

    Open <����_���__�����> [For <������>] [Access <�����������_������>]
    [<����������>] As [#]����� [Len=<�����_������>]

    ��� <���� ���_�����> — ������ ��������, �������� ��������������
    � ��� ��������� �����;

    <������> — ������ ������ � ������:

    Append — ���������� �������

    Binary — �������� ����

    Input — ���� ��� ������

    Output — ���� ��� ������

    Random — ���� ������������� �������;

    <�����������_������> — ������ ��� ������ ������ �� ���������
    � �����:

    Read — ������ ������

    Write — ������ ������

    Read Write — ������ � ������ ������������;

    <����������> — ���������� ����������� ������ � ������ ������
    ����������:

    Shared — �������������� ������

    Lock Read — ���������� ����� ��� ������

    Lock Write — ���������� ����� ��� ������

    Lock Read Write — ���������� ����� ��� ������ � ������;

    ����� — �������� ������������� �����;

    <�����_������> — ����������� ��� ������� ������������� �����,
    �������� — 32767 ����. ����������� ����� ������ ������ ������� ���������
    ������� (512 ����).

    ��� ������ ������������� ������� ����������� ��������� ������ � �������
    ��������� Type; ����������� ���� � ����� ����������� ���������. � ������� Binary, Input,
    Random ��� ������� �������� ����� ������� ���� � ��� �� ����, �� ��������
    ����� ��������; � ������� Append, Output ��������� �������������� �������
    ����� �������� �����.

    ������ 19.27. �������� ������

    ����� ���������

    �����������

    Open «FILE» For Input As #1 �������� ����������������� ����� ��� ������
    Open «FILE» For Binary Access Write As #1 �������� ��������� ����� ������ ��� ������

    Type Record Define userdefined type

    ID As Integer

    Name As String * 20

    End Type

    Dim MyRecord As Record

    ���������� ����������������� ���� ������

    Open «FILE» For Random As #1
    Len = Len (MyRecord)

    �������� ����� ������������� �������. ����� ������
    ����� ������������ ���������� �������� Len
    Open ‘FILE» For Output Shared As #1 �������� ����������������� ����� � ��������������
    �������� (����� ���������� ����� ������ � ������ � ����)

    Open «FILE» For Binary Access

    Read Lock Read As #1

    �������� ��������� ����� ��� ������, ������ ����� ������ �����������
    ���������

    �������� �����

    ����� ���������� ������ � ������ ��� ��������� � ������� ���������:

    Close [<������_�������_������>]

    ���� ����� ������������ ����� �� ������, ����������� ��� �������� �����.

    ������ 19.28. �������� ������

    Close # 1; #2;#4 �������� ������, ����� ��������
    ��� �������� 1, 2, 4

    Close ‘ �������� ���� �������� ������

    ������ ���������� � ����

    ���������� ��������� ���������� ������ ���������� � ����.

    1. ������ � ���������������� ����

    ������ �������� ������������ ������ ���������������� ������ � ����������������
    ���� ���������� ���� — �� �������� � �������� ������:

    Print#�����_�����;[<��������_������_����������>]

    �������� ������ ������ ����� ���������:

    [{Spc(n)|Tab[(n)]}] [<���������>] [charpos]

    ��� Spc(n) — ����� ������ ������;

    Tab(n) — ������ � ��������� �������;

    <���������> — ��������� ��������� ��� ����������� ����;

    charpos — ���������� ������� ������� ��� ���������� �������. ������
    ; ������������ ������� �� ������ ������ (� ������ ������ �����).

    ���� ���������������� ���� ������ ����� �����������, �� �������������
    ��������� �������� Print.

    ������ 19.29. ������ � ���������������� ����

    ����� ���������

    �����������

    Open «FILE» For Output As #1

    Print #1; «������ ������ ������»

    �������� ����� ��� ������

    ����� � ���� ��������� ������

    Print #1;

    ������� ������ ������
    Print #1; «���»; Tab ; «������������» ����� � ��� �������
    Print #1; «���» ; »
    » ; «������������»
    ���������� ���� ���� ��������
    Print #1; Sps(5); «���» ������� 5 �������� ����� ������� �����
    Print #1; Tab(10); «���» ���������������� � ������� 10
    MyBool=False ���������� �������� ���������� ���������� ����

    MyDate=#February 12, 1969#

    MyNull=Null

    MyError=CVErr(32767)

     

    Print #1; MyBool;

    Print #1; MyDate ; «��� ����»

    Print #1; MyNull; «��� ������ ��������»

    Print #1; MyError; «��� ������»

    ������ �������� ���������� � ����

    Close#1

    �������� �����

    ���������� ������:

    ������ ������ ������

    ��� ������������

    ��� ������������

    ���

    ���

    False

    February 12, 1969 — ��� ����

    Nul — ��� ������ ��������

    Error 32767 — ��� ��� ������

    2. ������ � ���������������� ����

    � ���������������� ���� ������ ���������� ����������� ��������:

    Write #�����_�����; [<��������_������_����������>]

    ��� ������ ��������� ���� ������������ ������ ����� ��� ����������
    �����, � ������� �� ��������� Print ��� ������ � ����
    ������������� ����������� ����������� �������- �����������:

    • ������� — ����� ����������;
    • ������� ������� — ������ ���������� ������.
  • � ������ ����� ����������� ������ �������� ������� (������� �� �����
    ������ — ������ �����).

    ������ 19.30. ������ ���������� � ���������������� ����

    ����� ���������

    �����������

    Open ‘FILE» For Output As #1

    Write #1;»����� ������!’; 1234567890

    Write #1;

    �������� ����� ��� ������

    �������� ���������� ������ � �����

    ������� ������ ������

    MyBool=False

    MyDate=»February 12, 1969″

    MyNull=Null

    MyError=CVErr(32767)

    ���������� �������� ����������

    Write #1;; MyBool ;

    Write #1; MyDate ;

    Write #1; MyNull ;

    Write #1; MyError;

    ������ �������� ���������� � ����

    Close#1

    �������� �����

    ��������� ������:

    «���� ������!»,1234567890

    #FALSE#,»February 12, 1969″,#NULL#,#ERROR 32767#

    3. ����� ������ � ���� ������������� �������

    ����� ������ ����������� ����������:

    Put [#�����_�����; [#������],<����������>

    ��� #������ — ����� ������ ��� ����� ������������� ������� ���� �����
    �����, � �������� ���������� ������, ��� ��������� �����. ���� �����
    �� ������, ������������ ��������� �� ��������� �������������� � ����������
    Get. Put, Seek.

    ������ 19.31. ������ � ���� ������������� �������

    ����� ���������

    �����������

    Type Record

    ID As Integer

    Name As String * 20

    End Type

    ���������� ����������������� ���� ������ ��� ������
    Dim MyRecord As Record ���������� ���������� �� ������ �����������������
    ���� ������
    Open «TESTFILE» For Random As #1 Len=Len(MyRecord) �������� ����� ������������� ������� � ������, ���������������
    ����� ������������ ����

    For RecordNumber=1 To 5

    ����������� ����� ��� ������ � ����

    MyRecord.ID=Number

    �MyRecord.Name =»������ �����»

    & RecordNumber

    ������������ ����������� ������
    Put #1, RecordNumber, MyRecord ���������������� ������ � ����

    Next RecordNumber

    Close #1

    ����� �����

    �������� �����

    ���� ���������� �� �����

    1. ������ ������ �� ����������������� ����� ������ ����������� ����������:

    Input #�����_�����; <������_����������>

    ������� ������� ��� ���������� ������������, ����������� �������� ������������
    ����� ������ ���������� � �����.

    ������ 19.32. ������ � ���� ������������� �������

    ����� ���������

    �����������

    Open «FILE» For Input As #1

    Do While Not EOF(1)

    Input #1; MyString; MyNumber

    Debug.Print MyString; MyNumber

    Loop

    Close #1

    �������� �����

    ���� �� ����� �����

    ������ ������ ������ � ����������

    ������ ��������� ������

    ����� �����

    �������� �����

    ������ ���������� ������ �� ����������������� ����� ��������

    Line Input #�����_�����; <����������>

    �������� ������������ ������������ ���������� ������ ������ �� �����
    �� ����������� ������� «������� �������» (�h�(13)) � ����������
    ���� ������ ��������� ���������� ����������� ����.

    ������ 19.33. ���������� ������ �� ����� ����������������� �������

    ����� ���������

    �����������

    Open «TESTFILE» For Input As #1

    Do While Not EOF(1)

    Line Input #1, TestLine

    Debug.Print TextLine

    Loop

    Close #1

    �������� �����

    ����, ���� �� ��������� ����� �����

    ������ ������ � ����������

    ������ � ���� Debug

    ����� �����

    �������� �����

    2. ������ ������ �� ����� ������������� �������

    ������ �������� ������������ ���������� ������ ����� �������������
    ������� � ��������� ����������:

    Get Put [#�����_�����; [#������],<����������>

    ������ 19.34. ������ �� ����� ������������� �������

    ����� ���������

    �����������

    Type Record ���������� ����������������� ���� ������ ��� ������

    ID As Integer

    Name As String * 20

    End Type

     
    Dim MyRecord As Record ���������� ���������� �� ������ �����������������
    ���� ������
    Open «FILE» For Random As #1 Len=Len(MyRecord) �������� ����� ������������� ������� � ������, ���������������
    ����� ������������ ����

    Psition=3

    Get #1, Position, MyRecord

    Close #1

    ������� ������ ( ������) ������

    ������������ ����������� ������

    �������� �����

    ���������������� �� ������ � �����

    ������� � ������ (����� ����� ��� ����� ������) ��� ���������� ������
    ��� ������ � ���� ��������������� ����������:

    Seek [#] �����_�����; �������

    ��� �������.- ����� � ��������� ������� ������ (1-2147483 647) �����.

    ��� �����, ������������ � ������ ����������������� �������, � �������
    ��������� SEEK ������������ ����.

    ������ 19.35. ���������������� � ����� ����������������� �������

    ����� ���������

    �����������

    Dim MyChar As String ���������� ���������� �� ������ �����������������
    ���� ������
    Open «FILE» For Input As #1 �������� ����� ������������� ������� � ������, ���������������
    ����� ������������ ����
    MaxSize=LOF(1) ���������� ���������� ������ � �����
    For NextChar- MaxSize To Step -1 ����������� ����� ��� ����������������� ����������
    ������� �� ����� ����� � ��� ������

    Seek #1, NextChar

    MyChar= Input(1,#1)

    Next NextChar

     

    Close #1

    �������� �����

    ��� �����, ������������ � ������ ������������� �������, ������������
    ��������� ����� ������, � ������� ����� �������� ���������.

    ������ 19.36. ���������������� � ����� ������������� �������

    ����� ���������

    �����������

    Type Record ���������� ����������������� ���� ������ ��� ������

    ID As Integer

    Name As String * 20

    End Type

    Dim MyRecord As Record

    ���������� ���������� �� ������ ����������������� ���� ������

    Open «FILE» For Random As #1 Len=Len(MyRecord) �������� ����� ������������� ������� � ������, ���������������
    ����� ������������ ����

    MaxSize=LOF(1)\ Len(MyRecord)

    Get For RecordNumber=MaxSize

    To 1 Step-1

    ���������� ���������� ������� � �����

    ����������� ����� ��� ����������������� ���������� ������� ��
    ����� ����� � ��� ������

    Seek #1, RecordNumber

    Get #1, , MyRecord

    Next RecordNumber

     

    Close #1

    �������� �����

    ���������� ����

    ���������� ��������� ����� ����������
    ����
    ,
    ������� ���������� ��� ����������� � ��������� ��������������
    ������ ������ ��������� ������������ (����� ��������� ������������,
    ����� � ������������� ��������, ��������� �������������, � ��.).

    ���������� ���� ��� ������ �����������

    ���������� ������� MsgBox() ������������ �������� ���������� ���� ��������� �����.

    1. ������� ����-���������

    MsgBox ( «������_���������»)

    ���� � ��������� ������ �������������� �������� ���������� ��� ��������
    ������� ����������, ������� ��������� ����������������� ���� ������
    � �.�., ������� ������������� �������� � ��������� � ����������
    ������������ �����.

    ������ 19.37.����� ��������� � �������� ����������

    ����� ���������

    �����������

    Option Explicit

    Sub Msg_Priim()

    Dim a As Single

    Randomize

    a=rnd

    MsgBox «�������� ���������� �����» & Str(a)

    End Sub

    �������������� ���������� ���� ���������� � ������ ����� �� ��������������

    ���������� ���������

    ���������� ����������

    ������ ���������� ��������� �����

    ���������� ���������� �������� ���������� �����

    ����� ���������

    ����� ���������

    2. ����-��������� � ���������� ��������

    ����� ������ ���������:

    MsgBox(«������_coo������»[, <������>] [, «���������_����»
    [, <����-���������>, <��������>])

    ��� <������_���������> — ������������ ����� ������ — 1024 �������;

    <������> — �����, ���������� ������ ����� ��������� ����� ������
    � �����������, ��� ����� ������;

    <���������_����> — ������ ��������;

    <����-���������> — ��� �����-��������� ��� ����������-���������
    ������ ��� ������ � ����, ������ ��������;

    <��������> �����, ������� ��������� ��������� ��� ������� ����.

    ���� ������� ��������� ������ � ���������� � ������� MsgBox()
    ��������� � ���. 19.7. ������� MsgBox() ���������� ��� (�����), ��������������� ������� ������-

    ������� 19.7. ������ ����� ��������� ������ � �� �����

    ���

    ���������

    ��������

    0

    1

    2

    3

    4

    5

    0

    256

    512

    16

    32

    48

    64

    0

    4096

    vbOKOnly

    vbOKCancel

    vbAbortRetryIgnore

    vbYesNoCansel

    vbYesNo

    vbRetryCansel

    vbDefaultButton 1

    vbDefaultButton 2

    vbDefaultButton 3

    vbCritical

    vbQuestion

    vbExclamation

    vbInformation

    vbApplicationModal

    vbSystemModal

    ���� ��������� ������

    ��

    ��, ������

    ����������, ���������, ������������

    ��, ���, ������

    ��, ���

    ���������, ������

    ���� ���������� �� ���������

    �������� 1

    �������� 2

    �������� 3

    ���� ����������

    ������ ���������

    ����������������� ������

    ����������������� ���������

    �������������� ���������

    ���� �����������

    ����������� ��������� �������� ( ��������� ������������ �����,
    ������ ���������� ������������������)

    ��������� ��������� �������� ( ��������� ������������ �����,
    ������ ���� ���������� ������������������)

    ������ 19.38. ������������ ����������� ���� � ��������

    ����� ��������� �����������
    Option Explicit �������������� ���������� ���� ���������� ����� ��
    ��������������
    Sub Msg_Priim() ���������� ���������

    Dim Response As Integer

    Dim Msg As String

    Dim Title As String

    Dim Help�As String

    Dim�Ctxt As Integer

    ���������� ����������

    Msg= «�� ������ ����������?»

    Styl=35

    ������ ���������

    ������ ��� ���� ( vbYesNoCancel+ vbDefaultButton+ vbQuestion)

    Title=» ������ ����-���������»

    ��������� ����

    Help= «DEMO.HLP» ��� �����- ���������
    Ctxt=0 ����� ��������� ������ �����- ���������
    Response=MsgBox( Msg; Style;Title; Help; Ctxt) ���������� ���������� ���� ������
    End Sub ����� ���������

    ���������� ���� ��� ����� ������

    ������� InputBox() ������������ ������������ ���� ��� ������ ������ ��������� � ��������
    ����� ������ �������� ��� ������� ������. ���������� ���������� ����������
    �����:

    Input���(<������_���������> [,<���������_����>] [,<�����_��_���������>]
    [,����][,Y���][, <����-���������>, <��������>])

    ��� <�����_��_���������> — ������ ��������, ��������� � ���������
    ����� (����� ���� ������);

    ����, Y��� — ������� ������ �������� ���� ����.

    ������ 19.39. ������������ ���� �����

    ����� ���������

    �����������

    Option Explicit �������������� ���������� ���� ���������� � ������
    ����� �� ��������������
    Sub Msg_Inp() ���������� ���������

    Dim Response As String

    Dim Message As String

    Dim Default As String

    Dim Title As String

    Dim Help As String

    Dim Style As String

    Dim Ctxt As Integer

    ���������� ����������
    Message=»������� �������, ���, �������� ��������
    «
    ������-���������
    Title=» ������ ���� ��� �����» ��������� ����
    Default=» ������� ����� �������������» ����� �� ���������
    Response=InputBox ( Message; Title; Default; 100;
    100)
    ���������� ���������� ���-�������� ���� ����������
    �����
    End Sub ����� ���������

    ���������� ���� �������������

    ���������� ���� ������������� ������������ ���� � �������������� ������
    ������ � ������. ��� �������� ����������� ���� ����������� ������� �������,
    ������
    � ��������� ���� ������������ ����� — ������. �����
    �������� ������ ��� ���������� ����������� ���� ������������, � �����
    ������ ������������ ����� (���. 19.26) ��� ���������� � ��������� (��������������)
    ��������� ����.

    ���. 19.26. ������ ������������ �����

    ������� .19.8. ������ ������ ������������ �����

    � ���������� ���� ����� ����������� �������� ������������� ����. ������� �������
    ������
    ��������. ������ � ����������� �������� — �� ����� ������
    � ����� ��� ����������� ������ �������� ������ ������.

    ����� �� ����� ���������������
    ������������� � �������� ������ � ���������� �����, �� ����� ����������
    ����������� ����� � ������� �������� Caption ������� Labels().

    ������ 19.40.

    Sheets(«<���_�����_�������>»). Labels («<���_ �������_�����>»)

    .���tion=»������ ������»

    ���� ����� ��������
    �������������, �������� �����, ������� ����� �������������. ���� �����
    ������ � ����� EditBoxes(), ��� ����� ������������� � ����������� ��������.

    ������ 19.41.

    Sheets(«<���_����a_��a�o�a>»).EditBoxes(«<���_
    o��a>»).Text=»c����� ������»

    ����� ����, ���� ��� �������� ����������� ���� �������� ����������
    ����������:

    � MultyLine =True — � ������ ��������������� ���� �����;

    � InputType — ����������� ���� ������, �������� � ���� (xlFormula,
    xlInteger,xllNumber, xlReference, xlText).

    ����� ������
    ������������ ����������� ���������� ��������� ����������� ����. ����
    ��� ���� ������������ � ������ �������, � ����� ������ ���� �����������
    ������ ��������. ��� ������� ������ ������ � ������� ������ ����� �����������
    ������� ������������ ��� �������� — Caption.

    ������ ������������
    ���������� �����, ����� �������� Value (��������� �������� True, ���� ������, ��� False — � ��������� ������). �������� �������������
    �������� ����� CheckBoxes().

    ������ �������������
    ������������ �������������� ����� �� ������ ����������������� �����.
    ����� ������ ������ � ������ ������, ���� ��� �������� �� ����������,
    ���� ��� ������ � ���������� ���� �������� ������ ������; ����� �����
    �� ������ ������ ������ �������� �������������� ������� ������. ��������
    ������������� �������� ����� OptionButtons(). �������� Value ��������� �������� True, ���� ������� ������, � False — � ��������� ������.

    ���� ������
    ������������� ��� ������ ������ ��������, ��� ���� �������� ������ ����������.
    ������������ ������ �������������� ������ ����������� �����. ����������
    ��������� ��������� ����������� ������� � ������� ������� �������;

    ListFillRange ������ �� �������� ����� ����������� �������, ���������� �������� ���������
    ������;

    � List() � ������������ ��������� ������ ���������������, ������ ������� ������
    ����� �������.

    �������������� ������
    �� ������ ������������� ���� �������, �� ���� ������� ������ � �����
    DropDowns().

    ���� ����� �� ������� ���������� ���� ������ � ���� ��������������.
    ��� ������ �������� ������ �� ������������� ���������� � ���� ��������������,
    ��� �������� ��� �������������. � �������� ��� ��� ������ ���� � ����������
    ����������.

    ���� ����� � �������������� ������� ������������ ����� ���������� �����������
    ������, �������� �������� ����� �������������.

    ������� ��������� ������� �������������� ��� ������������ ������� ���������.
    �������� Value �������� �����, ��������������� ��������� ��������, ������ � ��������
    ��������� ����� �����-ScrollBars(). �������� Min���
    ��������� ���������� ��������, �������� ��� �� ���������, ��� � �����
    ���������� ���� �������������� ��������. �������� LargeChangeSmallCnange �������� �������� ��������� �������� Value.

    ��������� ��������
    ���������� ������� ���������, �� ����������� �������� LargeChange.

    �� ���. 19.27 ������������ ���������� ���� ������������ ��� ����� ������
    �� ��������������� �������.

    ���������� ���� ������������ �������� ��������� ��������:

    • ����� (������, ������� ��� ��������, N ���.������ � ��.);
    • ���� ������ ��� ������ N ������ — ������ ����� ���� �����������
      � ������� �������� �����, ��� ���� ��������� �������� ������ �����
      ���� ���������, ������������� ��� �������. ��������� ������ �����
      �������� � ��������� ������ �������� �����;
    • ���� ����� (������� ��� ��������, � ���.������, ����), ��� �������
      ����� ���� ������ ��� �������� ���������� (�����, ����� �����, �����,
      ������, �������), ������� �������������� ������ � ������������ �������
      ���������;
    • �������������� ������ (����������, �������������, ������), ��������
      ������� ����� ���� �������� � ������� �������� �����, �����������
      ����������� ��������� ����� ���������;
    • ������ ���������� (<�� ���������>, <0�����>, <3������>,
      <�������>).

    ���. 19.27. ���������� ���� ������������

    ��� ����������� �������� ����������� ���� � ������� ������� ������������
    ���� ������ ������� ���������� ���� «�������������� �������»
    ��� ������� ���������, �������������.

  • Открытие или создание нового файла из кода VBA Excel для ввода и (или) вывода информации с помощью оператора Open. Синтаксис и параметры.

    Open – это оператор, который открывает или создает новый файл и включает операции ввода и (или) вывода информации.

    Оператор Open не используется для открытия собственных файлов офисных приложений, например, документов Word, рабочих книг Excel или баз данных Microsoft Access. Так как это приводит к нарушению целостности и повреждению файлов.

    Закрывается файл после окончания операций ввода и (или) вывода информации в коде VBA Excel с помощью оператора Close.

    Синтаксис оператора Open

    Краткая запись выражения с оператором Open:

    Open pathname For mode As [#] filenumber

    Краткая запись не содержит необязательные параметры. Знак решетки [#] используется в случае, когда номер файла указывается в виде числа без использования функции FreeFile. Например: #1, #2, #150, #300.

    С полной записью выражения с оператором Open вы можете ознакомиться на сайте разработчика. Мне не удалось заставить ее работать с необязательными параметрами в VBA Excel 2016.

    Параметры оператора Open

    Обязательные параметры:

    Параметр Описание
    pathname Строковое выражение, указывающее полный путь к открываемому файлу*.
    mode Ключевое слово, задающее режим** открытого файла:
    Append – последовательный доступ, который позволяет записывать данные в конец файла с сохранением предыдущих строк;
    Input – последовательный доступ, который разрешает только чтение файла;
    Output – последовательный доступ, который позволяет записать новую информацию в файл с перезаписью (очисткой) предыдущих данных.
    filenumber Числовое значение в диапазоне от 1 до 511 включительно, для получения которого следует использовать функцию FreeFile.

    * Если указанный файл не существует, он будет создан при открытии в любом режиме, кроме Input (только для чтения).
    ** На сайте разработчика вы можете узнать о существовании еще двух ключевых слов, задающих режим оператора Open: Binary и Random.


    Продолжение темы об открытии файла для ввода и вывода информации с примерами кода опубликовано в статье: Операторы чтения и записи в файл.

    Материалы
    этой статьи опубликованы в [12], [].

    § 1. 

    1.1.

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

    Рассмотрим
    основные принципы работы с файлами.

    В
    табл. 9.5 приведены наиболее часто
    используемые функции, обеспечивающие
    операции с файлами.

    Таблица
    9.5.
    Функции
    работы с файлами

    Функция

    Описание

    Open
    PathName

    For
    Mode

    [Access
    Am]

    [Lock]

    As
    #FileNumber

    [Len
    = reclen]

    Seek
    #FileNumber

    Position

    Seek
    (#FileNumber)

    FreeFile[(Range)
    ]

    Get
    #FileNumber ,

    [RecNumber]
    ,

    VarName

    Put
    #FileNumber ,

    [RecNumber]
    ,

    VarName

    LineInput

    #FileNumber

    VarName

    Input
    #FileNumber ,

    VarList

    Input(Number,
    #FileNumber)

    Print
    #FileNumber,

    [OutputList]

    Write
    #FileNumber,

    [OutputList]

    FileLen(PathName)

    LOF(FileNumber)

    EOF(FileNumber)

    Dir
    [ ( Path

    [.Attributes]
    ) ]

    CurDir

    ChDir
    Path

    MkDir
    Path

    RmDir
    path

    Kill
    PathName

    Функция
    Open
    открывает файл для выполнения операций
    чтения/записи.

    Параметр
    PathName
    задает имя файла, к которому надо
    получить доступ.

    Параметр
    Mode
    задает

    режим
    доступа к файлу: Input
    — ввод данных (чтение), Output
    вывод данных (запись), Binary
    чтение/запись файла прямого доступа,
    Random
    чтение/запись текстового

    двоичного
    файла.

    Параметр
    Am
    задает операции, разрешенные для
    открытого файла: Read
    (чтение), Write(запись),
    Read
    Write

    (чтение/запись).

    Параметр
    FileNumber
    номер файла (число в диапазоне от 1 до
    511) используется в файловых операциях
    в качестве идентификатора файла.

    Параметр
    reclen
    задает длину записи файла (размер
    буфера), если файл открывается в режиме
    прямого доступа (Binary)

    Функция
    Seek устанавливает указатель текущей
    позиции для выполнения операции
    чтения/записи файла, открытого в
    режиме прямого доступа (Binary).
    Параметр FileNumber
    — идентификатор файла. Параметр
    Position
    задает позицию (номер байта или
    записи), которую надо прочитать или
    перезаписать

    Функция
    Seek
    возвращает текущую позицию указателя
    чтения/записи для файла

    Функция
    FreeFile
    возвращает число, которое можно
    использовать в качестве

    идентификатора
    файла (параметра FileNumber
    в функции Open)

    Функция
    Get
    считывает
    данные из файла:

    FileNumber
    номер (идентификатор) файла,

    RecNumber
    позиция (номер байта или номер записи,
    если файл открыт в режиме Binary),
    в которую надо, установить указатель
    чтения перед выполнением операции,
    VarName
    — переменная, в которую надо поместить
    данные

    Функция
    Put
    записывает данные в файл: FileNumber

    номер (идентификатор) файла, RecNumber

    позиция (номер байта или номер записи,
    если файл открыт в режиме Binary),
    в которую надо, установить указатель
    чтения перед выполнением операции,
    VarName
    — переменная, в которой находятся
    данные

    Функция
    Line
    с
    параметром Input
    считывает строку из файла FileNumber
    и записывает ее в переменную VarName.
    Чтение

    происходит
    до тех пор, пока не будет обнаружен
    символ «новая строка» (код 13)

    Функция
    Input
    считывает данные из файла.
    FileNumber

    номер файла, VarList
    список переменных, значение которых
    надо прочитать из файла.

    Например:
    Input
    #1, a,b,c

    Функция
    Input
    считывает символьные или байтовые
    данные из файла, открытого в режиме
    Input
    или Binary.
    Number

    число считываемых символов или байтов,

    FileNumber
    — номер файла. Например:

    IDChar=Input(1,#1)

    Функция
    записывает в заданный параметром
    FileNumber
    текст. Параметр OutputList
    (список вывода) — список выражений
    символьного типа. Например:

    Print
    #1, «a=»+Str(a),»b=»+Str(b)

    Функция
    записывает данные в файл.
    OutputList—записываемые
    данные (список переменных). Символьные
    данные в файле будут заключены в
    кавычки.

    Например:
    Write
    #1, а,
    b

    Функция
    FileLen
    возвращает
    длину файла (в байтах)

    Функция
    LOF
    возвращает длину файла (в байтах)

    Функция
    EOF
    проверяет положение указателя
    чтения/записи. Значение функции равно
    True,
    если достигнут конец файла (прочитан
    последний элемент данных)

    Функция
    Dir
    возвращает
    имя файла или папки, соответствующее
    критерию, заданному параметрами Path
    и Attributes.
    Если файлов (каталогов), удовлетворяющих
    указанным параметрам нет, то значение
    функции – “пустая” строка (“ ”).Если
    в качестве параметра Path
    задан шаблон имени файла (например,
    c:\temp\*.bmp),
    то значение функции — имя файла,
    соответствующее шаблону. Чтобы
    получить имена остальных файлов,
    соответствующих шаблону, надо вызвать
    функцию Dir
    ещё раз, но без параметров. Например:

    fn=Dir(“C:\temp\*.bmp”)

    fn=fn+Chr
    (13)+
    Dir

    Файл
    Attributes
    задаёт (уточняет) тип файла: Normal
    (0),
    ReadOnly
    (1),
    Hidden(2),
    System(4),
    Directory
    (16
    ) -каталог.

    Примеры:

    Dir
    (“
    e:\test.txt”)
    -возвращает
    test.txt”,
    если файл test.txt
    существует на диске е;

    Dir
    (“e:\t\*. txt”
    )-
    возвращает имя первого найденного
    в каталоге e:\t файла с расширением
    txt;

    Dir
    (“e:\”,
    vbDirectory)
    –возвращает имя первого (по порядку)
    подкаталога корневого каталога диска
    е:

    Функция
    CurDir
    (без параметров) возвращает полное
    имя текущей (рабочей) папки. Сразу
    после запуска программы текущая папка
    — это папка, из которой запущена
    программа.

    Функция
    ChDir
    задаёт текущий (рабочий) каталог

    Функция
    MkDir создаёт новый каталог. Параметр
    Path
    задаёт путь к новому каталогу и его
    имя. При попытке создать каталог в
    несуществующей папке возникнет ошибка

    Функция
    RmDir
    удаляет каталог. Параметр Path
    задаёт полное имя каталога, который
    надо удалить. При попытке удалить
    каталог, в котором есть файлы, возникнет
    ошибка. В этом случае нужно сначала
    из него удалить файлы (функция Kill),
    и только после этого можно удалить
    сам каталог

    Функция
    Kill
    удаляет файл. Параметр PathName
    (полное имя файла) задаёт файл, который
    надо удалить. Если в качестве имени
    задать шаблон, то будут удалены все
    файлы, имена которых соответствуют
    указанному шаблону. Например:

    Kill
    “c:\temp\*.tmp”

    В Visual
    Basic
     реализованы
    три типа доступа к файлам:

    • последовательный
      – для чтения и записи текстовых файлов;

    • произвольный
      – для чтения и записи текста с записями
      структурированной длины;

    • двоичный
      – для чтения и записи произвольно
      структурированных файлов.

    • Имеются
      3 разных типа файлов:


    • последовательные файлы


    • файлы с произвольным доступом


    • бинарные файлы

    Файлы
    бывают двух типов:

    • Последовательного
      доступа

    • Произвольного
      доступа

    Мы
    в будем рассматривать только
    последовательный доступ. Данные в файле
    хранятся при этом в неструктурированном
    виде.

    Доступ
    к файлам VBA подразумевает
    выполнение 3 действий:


    открытие файла


    чтение или запись файла


    закрытие файла

    Работа
    с файлами данных всегда состоит из
    нескольких этапов:

    • получение
      дескриптора файла;

    • открытие
      файла;

    • чтение
      или запись данных;

    • закрытие
      файла.>

    Рассмотрим
    все перечисленные этапы поочередно.

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

    Функция Visual
    Basic
     FreeFile возвращает
    номер свободного канала, который можно
    использовать для работы с файлом.

    intFh
    = FreeFile( )

    В
    этом примере переменной intFH присваивается
    целое значение, которое можно использовать
    для открытия файла.

    Команда
    открытия файла:

    Open
    «имя путь.txt»
    for
    режим работы, номер цикла

    Открытие
    файлов:

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

    Open
    Filename for mode Access lock

    As
    # filenum
    LEN
    = reclen

    Filename –
    строка определяет название файла,
    который необходимо открыть.

    Mode –
    необязательный аргумент, который
    определяет режим доступа к файлу
    возможного значения:

    APPEND –
    последовательный доступ к файлу. Если
    файл уже существует, то данные
    присоединяются в конец файла, если файл
    не существует, то они отсоединяются.

    BINARU –
    бинарный доступ к файлу для чтения и
    записи.

    INPUT –
    последовательный доступ к файлу только
    для чтения, если файл не существует, то
    возникает ошибка.

    OUTPUT –
    последовательный доступ только для
    записи. Если файл существует, он удаляется
    и создается заново, если не существует,
    то просто создается.

    RANDOM –
    произвольный доступ для чтения и записи
    данных. Этот режим используется по
    умолчанию, если аргумент mod не
    задан.

    ACCESS –
    необязательный аргумент, определяющий
    операции которые размещены с открытым
    файлом.

    READ –
    файл открыт только для чтения.

    WRITE —
    файл открыт только для записи.

    READWRITE —
    файл открыт только для чтения и записи.

    Открытие
    файла
    . Способ
    открытия файла с последовательным
    доступом (для чтения, записи или
    добавления) задается при вызове
    оператора Open.

    Open Имя_файла For
    [Input \ Output \ Append] As FileHandle

    Если
    в операторе использовано слово Input,
    то файл открывается только для чтения
    из файла. Если файл не существует и
    открывается для чтения, то Visual
    Basic
     выдает
    сообщение об ошибке.

    Если
    в операторе использовано слово Output,
    то файл открывается для записи. Если
    файл с таким именем уже существует, то
    его содержимое удаляется. Если файла
    с таким именем нет на диске, то создается
    новый файл.

    Если
    в операторе использовано слово Append,
    то файл открывается для добавления.
    Если файла с таким именем нет, то он
    создается.

    В
    конце оператора указывается номер
    канала, возвращаемый функцией FreeFile. Приведем
    несколько примеров использования
    оператора Open при
    последовательном доступе.

    Open
    “Text . txt” For Input As intFH1

    Open
    “C: / DAN / Text . txt” For Output As intFH2

    Open
    “Proba . txt” For Append As intFH3

    Команда
    открытия файла.

    Open
    «Имя пути. txt» «Режим работы» С # номер
    файла. Например,

    Open
    «S: / Windows / Рабочий стол / Учебный процесс
    / Вектор.txt». Input S #1.

    Режим
    работы.

    Output
    – для записи данных файлов.

    Append
    — для добавления

    Input
    для чтения
    данных из файла. Число любое, целое
    (1-511)

    Режим
    работы:

    1. Output
      – для записи данных (имеющиеся стираются)

    2. Append
      – для добавления информации в конец
      файла

    3. Input
      – для чтения данных из файла

    В
    качестве номера файла можно использовать
    целое число от 1 до 511

    Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #

    Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
  • Нужно ли ежегодно обновлять должностные инструкции
  • Блонд активатор palette для чего нужен инструкция по применению
  • Bragman turbo yeast industrial 200l инструкция
  • Кувшин для очистки самогона макарыч инструкция
  • Lavor pro scl multimatic 35 инструкция