gavin, похоже, здесь есть одна деталь - открывать надо не просто книгу Excel, а заданные листы в ней. Это уже сложнее. Скажем, WordXP предупреждает при попытке выбрать закладку для гиперссылки (т.е. лист) в файле Excel, что он "не может выполнить разбор файла этого типа". Тогда действия будут примерно такими (тут еще дорабатывать, конечно, надо):
1. В doc-файле с оглавлением создать модуль класса с объектом типа Application:
Public WithEvents App0 As Word.Application
Private Sub App0_WindowSelectionChange(ByVal Sel As Selection) Dim FHandle As Long If Sel.Hyperlinks.Count > 0 Then FHandle = FreeFile Open "text1.txt" For Output As FHandle Print #FHandle, Sel.Hyperlinks(1).TextToDisplay Close #FHandle End If End Sub
Тогда при выборе гиперссылки будет создаваться текстовый файл со строкой из оглавления (может, есть еще какой-то способ передачи этой строки из Word'а в Excel, не знаю).
2. В открываемой книге определить процедуру обработки события:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Proc1 End Sub
Sub Proc1() Dim i, FHandle As Long Dim Str1 As String FHandle = FreeFile On Error GoTo 1 Open "text1.txt" For Input As FHandle Input #FHandle, Str1 Close #FHandle Select Case Str1 'здесь перебираешь варианты, какие есть в оглавлении; 'когда совпадет - сделаешь соответствующий 'Worksheets(...).Select End Select Kill "text1.txt" 'это чтобы каждый раз один и тот же лист не выбирался 1: End Sub
Тогда при нажатии правой кнопки мыши в открывшейся книге вместе с выводом контекстного меню выберется и нужный лист. Повесить этот код на Workbook_Open не получится - Word не завершит свою процедуру обработки события, пока не откроется книга в Excel, а она не откроется, пока Word не закроет файл, так что они друг друга заблокируют.
--------------------
Я долго учился на чужих ошибках, и теперь мои собственные ошибки не хуже, чем у других.
|