Шрифт:
При работе подпрограммы поиска каждое вхождение выделяется. Вот, к примеру, фрагмент кода макроса, который отображает в диалоговом окне номера страниц, на которых найден текст "text".
Selection.HomeKey Unit:=wdStory
Dim a As String
a = ""
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
Text = "text"
Forward = True
Wrap = wdFindStop
End With
While Selection.Find.Execute = True
a = a + " " + Str(Selection.Information(wdActiveEndPageNumber))
Wend
MsgBox a
7.
"Открыт документ Word, хочу запустить в нем макрос, который в свою очередь запускает макрос Excel, обрабатывающий Excel-таблицу. После этого через Clipboard из Excel макрос пересылает в Word-документ заданную прямоугольную область таблицы. Макрос Word обрабатывает эту область и начинает в требуемой последовательности копировать в Word-документ через Clipboard фрагменты Excel-таблицы. По окончании копирования Word закрывает все ненужные макросы, включая макрос Excel. Как все это сделать, чтобы работало?"
Для работы из одного приложения Office с другим лучше всего использовать технологию ActiveX. Она основана на имеющейся в Office возможности представлять одну программу в другой как некий объект, с которым можно работать теми же командами, что используются при непосредственной работе с этой программой.
Так, чтобы можно было из Word'oвoro макроса работать с Excel'ем, следует создать объект Excel.Sheet (здесь "es" — простое наименование переменной, у вас может быть любым).
Dim es As Object
Set es = CreateObject("Excel.Sheet")
Если надо сразу открыть какой-либо файл Excel'а, то можно использовать команду GetObject:
Set es= GetObject("Путь к файлу Excel'a")
При желании можно сделать созданный объект Excel видимым:
es.Application.Visible = True
Теперь можно этому объекту es (т. е. просто запущенному Excel'у) посылать команды такие же, как и в макросах Excel'a (предваряя текстом "es.Application." те из команд, которые не требуют прямого указания объекта, — так как надо дать понять программе, что работа идет именно с Excel'ем). Так, чтобы открыть файл Excel'а, можно также дать команду
es.Application.Workbooks.Open FileName:="Путь к файлу Excel'a"
а чтобы, например, поместить в первую ячейку открытой книги текст, используйте команду
es.Cells(1, 1).Value = "Это столбец А, строка 1"
В принципе я бы вам посоветовал поместить тот макрос, который Вы планировали для Excel'a, именно в исходный Word'oBbrii, переписав его команды в соответствии с принципом связывания (т. е. управления одним приложением из другого — так, как описано выше).
Закрыть Excel можно командой
es.Application.Quit
Set es= Nothing
Если работать с таблицей из Word почему-либо нельзя, и требуется именно вызвать Excel'евский макрос, то для вызова макроса следует использовать команду
es.Application.Run "имя макроса"
Также можно автоматически запустить какой-либо макрос при открытии файла Excel:
es.Application.Workbooks.Open FileName:="Путь к файлу Excel'а!имя макроса" (например, es.Application.Workbooks.Open FileName:="c: \bookl.xls!macrl", точно так же, разделяя имя файла и имя макроса восклицательным знаком — и в команде Shel1)
В общем, есть простор для творчества. Про работу из Word'а с Excel'ем и т. д. почитайте разделы Справки VBA (для Microsoft Office 97 — по-русски): "Работа с приложениями", "Функция CreateObject", "Функция GetObject", "Программирование объектов".
8.
"Можно ли в "Word, при помощи гиперссылки вызвать команду меню, в частности команду "Найти"?"
Непосредственно с помощью гиперссылки — нет. Но можно поместить текст гиперссылки в элемент формы, который уже связать с макросом, вызывающим диалоговое окно. Для реализации данного способа необходимо вывести на экран панель инструментов "Элементы управления", включить кнопкой "Режим
Конструктора", добавить элемент "Надпись", в меню правой кнопки мыши выбрать "Свойства", в разделе Caption поместить текст ссылки, оформить шрифт и цвет текста в соответствующем разделе Свойств, затем из меню правой кнопки мыши выбрать "Исходный текст", а в появившийся макрос вписать команду
Private Sub Label1_С1ick
On Error Resume Next
Dialogs(wdDialogEditFind).Show
End Sub
или любые другие, какие пожелаете. После того, как Вы отключите Режим конструктора, созданная надпись с гиперссылкой будет работать так, как Вы желаете — при нажатии на нее вызовется окно поиска текста.