powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запуск гиперссылки во вновь созданном приложении Word
17 сообщений из 17, страница 1 из 1
Запуск гиперссылки во вновь созданном приложении Word
    #37786689
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь запустить гиперссылку из создаваемого экземпляра Word. Но конструкция
Application.FollowHyperlink - не работает.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub WORD_HIPER_LINK()
Dim wordApp As Object
Dim strFullFileName$
'для отладки, потом убрать
strFullFileName = "C:\2.xls"
'On Error Resume Next
'создаем word
Set wordApp = CreateObject("Word.Application")
Application.FollowHyperlink strFullFileName
wordApp.Quit
Set wordApp = Nothing
End Sub
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786695
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-Kиз создаваемого экземпляра Word. создаваемый экземпляр есть wordApp, а не Application
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786696
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дак он тоже не работает
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786698
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп, а кто сказал, что у Application есть вообще такой метод????
Он есть у документа.
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786699
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что гиперссылка требует себе родителя: книгу или страницу, а приложение его почемуто не устраивает... или библиотеки нужны?
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786701
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786702
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все-таки вы можете пояснить, зачем вам переменная wordApp в этом коде?

Код: vbnet
1.
2.
3.
Set wordApp = CreateObject("Word.Application")
Application.FollowHyperlink strFullFileName
wordApp.Quit
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786707
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-KВ access - есть...
но мы же за ворд говорим

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim wordApp As Object, wordDoc As Object
Dim strFullFileName$
'для отладки, потом убрать
strFullFileName = "c:\Книга1.xls"
'On Error Resume Next
'создаем word
Set wordApp = CreateObject("Word.Application")
Set wordDoc = wordApp.documents.Add
wordDoc.FollowHyperlink strFullFileName
wordApp.Quit
Set wordApp = Nothing
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786708
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача - запустить документ? Разве для этого надо создавать "Word.Application"?
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786717
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonЗадача - запустить документ? Разве для этого надо создавать "Word.Application"?полагаю, что у человека это часть какого-то кода. Но если надо запустить просто документ или ссылку, то конечно же
Код: vbnet
1.
Call ShellExecute(0, "open", "c:\книга1.xls", "", "", SW_SHOWNORMAL)


объявление
Код: vbnet
1.
2.
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
            ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786755
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень большого кода..)))

пытаюсь понять - как работает FollowHyperlink при наличии двух или более экземпляпров приложения excel.

как осуществляется выбор - в каком приложении открывать файл ?

Сейчас попробую PID-ы приложений считать...
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786771
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно открыть в существующем экземпляре экселя, можно получить его с помощью GetObject....
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786796
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой существующий файл Excel - невидымый, запароленный, зашифрованный... и вообще сидит в exe-шнике и требует под себя отдельное приложение. И открывая другой файл Excel, я должен открыть его ни в коем случае не в своем экземпляре Excel, а во внешнем...

Попробовал проверить:

Получил для каждого открытого приложения Excel идентификационный номер процесса PID

Код: vbnet
1.
2.
Dim PID&
PID = GetCurrentProcessId



При наличии 2 и более экземпляров Excel- для срабатывания гиперссылки из Word (естественно при отсутствии в них открытого файла совпадающего по пути с открываемым) - выбирается экземпляр с самым маленьким PID...

Как же заставить FollowHyperlink сработать для другого окна?
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786805
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-Kкак осуществляется выбор - в каком приложении открывать файл ?

Ну если ты понял из вышеприведенного кода - выбор осущетсвляется только тобой.
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786820
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, собственно, я пока не понял, в чем проблема.
а) Нужно открыть файл в новом, вновь созданном экземпляре экселя? Это можно сделать через CreateObject.
б) Нужно открыть файл во вполне определенном экземпляре экселя? Тогда чем определен этот экземпляр? Он запущен тобой программно? Тогда у тебя есть ссылка на этот объект.
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786892
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТак, собственно, я пока не понял, в чем проблема.
а) Нужно открыть файл в новом, вновь созданном экземпляре экселя? Это можно сделать через CreateObject.
б) Нужно открыть файл во вполне определенном экземпляре экселя? Тогда чем определен этот экземпляр? Он запущен тобой программно? Тогда у тебя есть ссылка на этот объект.


Пользователь еще до того как начнет работать мой файл - наоткрывает кучу файлов и делает в них кучу изменений. Причем там могут быть и 1.xls и 1.xlsb и 1.xlsm...

У меня висит форма, перекрывающая весь экран. На форме кнопка-ссылка для открытия файла 1.xls.

Нажимаем кнопку, открывается файл. Но естественно не в моем приложении а в соседнем....

А пользователь наоткрывал уже штук 5 приложений и в том числе может быть открыт мой файл... а может быть и нет...

Ну активирую я програмно приложение Excel не совпадающее с моим... И через ShellExecute открою файл именно в нем...

(Кстати нигде не встречал упоминания о том, что ShellExecute для открытия файла excel выбирает именно активное окно приложения, долго думал и решил удостовериться и действительно получилось, только месяц думал как выделить окно соседнего приложения, а вот что касается FollowHyperlink - это большой вопрос )

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public PID_OPEN_FILE_1
Public strFullFileName$



Sub АКТИВИРУЕМ_ОКНО_СОСЕДНЕГО_ПРИЛОЖЕНИЯ_EXCEL_И_ОТКРЫВАЕМ_ФАЙЛ_В_НЕМ()

Dim WMI
Dim Process
Dim SQuery
Dim WShell  '
Dim Processes 'Коллекция процессов
Dim Ret
Dim PID
'On Error Resume Next
strFullFileName = "C:\1.xls"
'  //Соединяемся с WMI
If PID_OPEN_FILE_1 = Empty Then
MsgBox "попыток открытия файла с помощью данного макроса еще небыло"
Else
MsgBox "файл уже открывали"
End If
 
Set WShell = CreateObject("Wscript.Shell")
Set WMI = GetObject("winMgmts:")
  PID = GetCurrentProcessId
        'Формируем текст запроса
        SQuery = "SELECT * FROM Win32_Process  WHERE Name<>'EXPLORER.EXE'"
        'Создаем коллекцию-результат запроса
        Set Processes = WMI.ExecQuery(SQuery)
        'Цикл по всем элементам коллекции
For Each Process In Processes
 Ret = False
 If Process.Caption Like "EXCEL.EXE" And Process.processid <> PID Then
   Select Case PID_OPEN_FILE_1
   Case Empty
   '''для контроля записываем id-процесса, в котором открыли файл.
   '''при последующем открытии файла будем перебирать все id-процесса - пока не найдем нужный
     PID_OPEN_FILE_1 = Process.processid
       Ret = WShell.AppActivate(Process.processid)
         If Ret = True Then Ret = ShellExecute(0, "open", strFullFileName, 0, vbNullString, 5)
   Case Process.processid
      Ret = WShell.AppActivate(Process.processid)
           If Ret = True Then Ret = ShellExecute(0, "open", strFullFileName, 0, vbNullString, 5)
   End Select
 End If
Next
Set WMI = Nothing
Set WShell = Nothing
End Sub




Но проблема то останется...

Если файл открыт не из моей программы:
1. то я точно не знаю в каком экземпляре приложения он уже может быть открыт
2. если он открыт именно в том экземпляре приложения, которое я выделил, то при открытии вылезает сообщение о том что файл открыт и при повторном открытии будут утеряны все изменения...

Есть у меня подозрение, что попытка открыть уже открытый файл - дает какую-то ошибку ... вот если бы эту ошибку перехватить и до по появления этого окошка - отменить его появление , и просто ограничится активацией окна приложения...
...
Рейтинг: 0 / 0
Запуск гиперссылки во вновь созданном приложении Word
    #37786903
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
естественно работа макроса рассчитана на наличие ДВУХ открытых приложений Excel
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запуск гиперссылки во вновь созданном приложении Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]