Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Разработка приложений - с помощью Excel 97 и VBA
<<-[Весь Текст]
Страница: из 7
 <<-
 
(команда File|Import File), которые преобразятся в компоненты Module1 и Module2 
нашего проекта, мы выполним следующие операции. Скопируем текст процедуры 
ParseString из Module1 в Module (выделив текст, а затем записав его в буфер 
обмена и восстановив оттуда). Затем удалим Module1 (оставшиеся там процедуры 
нам не понадобятся), а Module2 переименуем в Service (см. листинг 4).
Листинг 4. Текст модуля кода Service
Attribute VB_Name = “Service”
DefInt I-N
Sub FileNameTest(PathFile$, Path$, File$)
‘
‘ Вход: PathFile$ - полное имя файла
‘ Выход: Path$ - имя каталога
‘ File$ - имя файла
in1 = InstrReverse(PathFile$, “\”)
If in1 <= 0 Then
Path$ = “”: File$ = PathFile$
Else
Path$ = LEFT$(PathFile$, in1)
File$ = Mid$(PathFile$, in1 + 1)
End If
End Sub
Function InstrReverse(Text$, Key$)
‘
‘ поиск ПОСЛЕДНЕГО (а не первого, как в INSTR)
‘ контекста в строке, Text$ - исходная строка
‘ Key$ - разделитель в строке
in1 = InStr(Text$, Key$)
If in1 > 0 Then
Do While in1 < Len(Text$)
in2 = InStr(in1 + 1, Text$, Key$)
If in2 <= 0 Then Exit Do Else in1 = in2
Loop
End If
InstrReverse = in1
End Function
Function ParseString(s$, del$, n) As String
‘ синтаксический анализ строки на наличие разделителя,
‘ возвращает n-ое значение
Dim pos As Long, i As Integer, pos2 As Long
‘
ParseString = s$
pos = InStr(s$, del$)
If pos Then ‘ если есть del$
If n = 1 Then
ParseString = LEFT$(s$, pos - 1)
Else
For i = 1 To n - 1 ‘ подсчет элементов данных
pos2 = InStr(pos + 1, s$, del$)
If pos2 = 0 Then ‘ конец строки
If i = n - 1 Then
ParseString = Trim(Mid$(s$, pos + _
Len(del$)))
‘ длина разделителя
Else
ParseString = “”
‘ n-ый элемент данных не найден
End If
Exit Function
End If
ParseString = Trim(Mid$(s$, pos + Len(del$), _
pos2 - pos - Len(del$)))
pos = pos2
Next
End If
ElseIf n > 1 Then
ParseString = “” ‘ n-ый элемент данных не найден
End If
End Function
Эти замысловатые операции нужны для того, чтобы подчеркнуть отсутствие 
физической связи между компонентами проекта Excel и исходными BAS-файлами. 
Такой способ применения повторно используемого программного кода (копирование 
процедур из модуля в модуль) мы категорически не рекомендуем при работе в 
обычном VB, но при работе в VBA он вполне допустим, а порой (как в данном 
случае) — даже полезен. Мы обсудим эти проблемы, связанные со спецификой работы 
с повторно используемыми процедурами в VB и VBA, в последующих статьях. А пока 
продолжим создание нашего приложения.
ШАГ 7. Проверим работоспособность нашего приложения на этом этапе. В головной 
процедуре CreateVBProjCrossRef оставим знак комментария только у обращения к 
CreatPivotTable. Запустите программу на выполнение и убедитесь, что по мере 
выбора имен файлов VB-проектов в среде Excel формируется исходная электронная 
 
<<-[Весь Текст]
Страница: из 7
 <<-