![]() |
|
Как на 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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |