Имя: Пароль:
IT
 
Как на vb-script занести в буфер обмена гиперссылку с указанным текстом и с
0 Гений 1С
 
гуру
23.10.06
16:09
Как на vb-script занести в буфер обмена гиперссылку с указанным текстом и ссылкой?
1 Rovan
 
гуру
23.10.06
16:48
2 Гений 1С
 
гуру
23.10.06
17:24
И где там про буфер обмена, это я и так все знал???
Как вообще через оле-объекты работать с буфером обмана?
3 SKrin
 
23.10.06
17:35
нашел в одном скрипте

'CopytoClipboard
set ie=CreateObject("internetExplorer.application")
ie.navigate "about:blank"
do until ie.readystate=4: wscript.sleep 1: loop
ie.document.parentwindow.clipboardData.setData "Text", MyStr
4 Гений 1С
 
гуру
23.10.06
18:36
Неужели нельзя напрямую, без ие?
Через шелл как-нибудь?
Знатоки! АУ!
5 smaharbA
 
23.10.06
18:36
(4) командная строка пойдет ?
6 smaharbA
 
23.10.06
18:37
+(5) ну это только для 2003 и некоторых ХР
7 Гений 1С
 
гуру
23.10.06
18:43
(5) не, лучше ОЛЕ, это слишком тяжело - запускать приложение чисто для буфера обмена...
А в визуал басике есть функция API для этого?
8 asady
 
23.10.06
18:46
(7) ActiveX можно заюзать на форме вместо явного создания ОЛЕ объекта.
9 smaharbA
 
23.10.06
18:49
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
10 The gray Cardinal
 
23.10.06
19:39
(9) Это на VBScript? :)
Можно воспользоваться дополнительными библиотеками:
http://www.script-coding.info/WshExtra.html
или
http://www.script-coding.info/AutiItX.html
или
http://www.script-coding.info/dynwrap.html
(вот здесь уже пригодится (9))
11 Гений 1С
 
гуру
24.10.06
09:50
(10) спасибо, почитаем....
12 Гений 1С
 
гуру
26.10.06
12:33
(3) Так устанавливается текст, а нужно установить гиперссылку!
13 Билли Г
 
26.10.06
12:45
(12)...clipboardData.setData("url", "http://www.forum.mista.ru/users.php?id=3332");
14 Гений 1С
 
гуру
26.10.06
17:10
(13) мелкомягкий, а как сделать, чтобы текс не был равен ссылке, т.е. например текст ссылки был Миста, а адрес http://www.forum.mista.ru ????
15 Бубузяка
 
26.10.06
22:28
То же, что в (3), но без IE

clipbrd=СоздатьОбъект("htmlfile");
clipbrd.ParentWindow.clipboardData.setData("text", "Привет, миста");
Сообщить(clipbrd.ParentWindow.ClipboardData.GetData("text"));
16 Бубузяка
 
26.10.06
22:33
Если можешь прочитать текст и ссылку, то можно еще так подурачиться:

WshShell = CreateObject("WScript.Shell");
DeskTop=WshShell.SpecialFolders("Desktop");
Shortcut=WshShell.CreateShortcut(Desktop + "\mista.url");
Shortcut.TargetPath="www.mista.ru";
Shortcut.Save();
17 Гений 1С
 
гуру
27.10.06
09:52
(15) ссылку, ссылку, а не просто текст!
18 Бубузяка
 
27.10.06
15:25
Блин, ты же гений. Тебе же пример написали (13), тип данных "url".
19 jbond
 
27.10.06
15:26
В (10) самое нормальное решение ИМХО
20 Гений 1С
 
гуру
27.10.06
16:27
(19) Не у всех юзверей есть эти Длл-ки... Неохота парить зверей...
21 Гений 1С
 
гуру
27.10.06
17:02
Sub test()
   Set clipbrd = CreateObject("htmlfile")
   clipbrd.ParentWindow.ClipboardData.setData "text", "Привет, миста"
   clipbrd.ParentWindow.ClipboardData.setData "url", "http://fixin.com.ru"
   Debug.Print clipbrd.ParentWindow.ClipboardData.GetData("text")
   Debug.Print clipbrd.ParentWindow.ClipboardData.GetData("url")

End Sub

не хочет сволочь, урл устанавилвать, только текст... ;-(
22 Гений 1С
 
гуру
27.10.06
19:11
23 asady
 
27.10.06
19:20
(22)
этот скрипт у меня работает.
Запукаю его в винде.
потом захожу в ворд и нажимаю шифт+инс и готово!

set ie=CreateObject("internetExplorer.application")
ie.navigate "about:blank"
do until ie.readystate=4: wscript.sleep 1: loop
ie.document.parentwindow.clipboardData.setData "url", "http://www.forum.mista.ru/"
24 Гений 1С
 
гуру
27.10.06
19:35
Дружище, у меня не работает!
Видимо потому что гиперссылка fixin:Work или outlook:kksdjfksdkfjkdsjaf
Т.е. не типо http: а типо fixin:Work

А что значит готово, что она у тебя сразу вставляется синей и подчеркнутой.
А как сделать, чтобы текст был Миста, а ссылка - на форум мисты?

Вот над чем я бьюсь!

Мне надо делать ссылки из одной задачи на другую
25 asady
 
27.10.06
19:37
(24)
да именно вставляется синей и подчеркнутой.
Только после shift+ins нажми enter
26 Гений 1С
 
гуру
27.10.06
19:40
(24) еще раз внимательно прочитай плиз...
Поясняю еще раз.
Создаем в ворде гиперссылку с текстом Миста и ссылкой на mista.ru
Копируем ее.
Вставляем в другой ворд - все вставляется замечательно.
А теперь повторите то же самое на скриптах, тогда я преклоню свою седую голову.
Нужно чтобы текст отличался от ссылки.


Кстати, твой код из (23) у меня не работает.
Буфер обмена остается пустым.

Проверь будет ли работать такой код:

set ie=CreateObject("internetExplorer.application")
ie.navigate "about:blank"
do until ie.readystate=4: wscript.sleep 1: loop
ie.document.parentwindow.clipboardData.setData "url", "fixin:Work"
27 asady
 
27.10.06
19:42
(26)
с текстом fixin:Work ссылка не вставляется.
видно идет проверка на валидность.
28 asady
 
27.10.06
19:45
(26) а если вставить прямо из скрипта во ворд - тебя устроит?
29 Гений 1С
 
гуру
27.10.06
19:56
(27) странная валидность mailto:xxx - валидна, а fixin: - невалидна???
У меня зареглено в системе расширение fixin:

(28) Нет, во-первых нужно вставлять в текст задачи на outlook, во вторых пользователь может вставить и в другое место.
30 asady
 
27.10.06
19:57
Этот скрипт вставляет любой текст во ворд как гиперссылку. я проверил.

//JScript
//Создаем объект для работы с Вордом
var wrd = new ActiveXObject("Word.Application");
//Создаем новый документ
wrd.Documents.Add();
//Получаем указатель на активный документ
adoc=wrd.ActiveDocument;
//Активизируем Ворд
myRange = adoc.Range(Start=0, End=0);

wrd.Visible = true;
wrd.Activate();
adoc.Hyperlinks.Add(myRange,"fixin://Work/");
31 asady
 
27.10.06
19:58
(29) а если написать макрос? и запускать его во ворде вместо шифт+инсерт?
32 asady
 
27.10.06
20:35
(31)

Этот макрос вставляет текст из буфера обмена в документ Ворда в текущую точку как гиперссылку.
для ускорения юзания этого макроса назначь вызов горячим клавишам (вместо shift+ins)

Sub Macros2()
  Set clipbrd = CreateObject("htmlfile")
  strurl = clipbrd.ParentWindow.clipboardData.getData("text")
  ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=strurl
End Sub
33 Гений 1С
 
гуру
30.10.06
09:41
(32) асади, читай внимательно, я просил не только в ворд вставлять.
Кстати, я почти решил эту проблему.
Я записал макрос, как ворд ложит в буфер обмена такую хитровыдрюченную ссылку, запускаю ворд, сохраняю ссылку в буфер обмена.
Только одна беда - если ворд невидим, то он валится, не заполняя буфер обмена, а если видим все ок.
Эксель тоже может ложить в БО, не валится, но при вставке получается кривоватая ссылка.
34 Гений 1С
 
гуру
30.10.06
09:46
Пробовал сделать через объект Word, но он вылетает, если окно не активно:

   Set w = CreateObject("Word.Application")
   Set doc = w.Documents.Add

   doc.Hyperlinks.Add w.Selection.Range, "http:\fixin.com.ru", "", "", "Сайт гения 1С"
   w.Selection.WholeStory
   
   w.Selection.Copy
   Set w = Nothing

Поэтому пришлось делать через Эксель:
   
   Set w = CreateObject("Excel.Application")
   Set sheet = w.workBooks.Add
   Set h = w.ActiveSheet.Hyperlinks.Add(w.Selection, "fixin:mista", "Миста")
   Set R = h.Range
   R.Copy
   sheet.Close (0)
   Set w = Nothing

Единственный недостаток - ссылка копируется с переводом строки.

Видимо, таким же макаром можно скопировать и данные интернет-эксплорера, если у него есть объект Range.
Буду благодарен, если подскажете, как сделать, чтобы скрипт Word не вылетал (он работает если только Word запущен нормально, а не через OLE), или как добиться того же результата менее тяжеловесными способами.


expression.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay, Target)
expression Required. An expression that returns a Hyperlinks object.
Anchor Required Object. The text or graphic that you want turned into a hyperlink.
Address Optional Variant. The address for the specified link. The address can be an e-mail address, an Internet address, or a file name. Note that Microsoft Word doesn't check the accuracy of the address.
SubAddress Optional Variant. The name of a location within the destination file, such as a bookmark, named range, or slide number.
ScreenTip Optional Variant. The text that appears as a ScreenTip when the mouse pointer is positioned over the specified hyperlink. The default value is Address.
TextToDisplay Optional Variant. The display text of the specified hyperlink. The value of this argument replaces the text or graphic specified by Anchor.
Target Optional Variant. The name of the frame or window in which you want to load the specified hyperlink.


   Set w = CreateObject("Excel.Application")
   Set sheet = w.workBooks.Add
   Set h = w.ActiveSheet.Hyperlinks.Add(w.Selection, "fixin:mista", "Миста")
   Set R = h.Range
   R.Copy
   sheet.Close (0)
   Set w = Nothing