1

Тема: Вставить гиперссылку в середину создаваемого параграфа

Не получается в цикле делать следующее :(
       

'Создаем начало параграфа
myRange.Text = "Chr(9)
'Вставляем гиперссылку
StartPoint.SetRange Start:=myRange.Start, End:=myRange.End
.Hyperlinks.Add SubAddress:=.Bookmarks(i).Name, Anchor:=InsPoint, _
ScreenTip:="", TextToDisplay:="Здесь должен быть текст параграфа букмарки"
'Закончили вставлять гиперссылку
'Вставляем некоторый дальнейший текст
myRange.InsertAfter ("  Здесь должен быть текст страницы букмарки")
myRange.Paragraphs.Style = "Оглавление 1"
myRange.Collapse (wdCollapseEnd)

Пропадает текст до гиперссылки и текст после.
Не форматируется стилем "Оглавление 1".
2й и последующие параграфы замещают собой ниже находящийся текст.

До помещения кода вставки ссылки в цикл все работало правильно.

Что я делаю не так?
Как это сделать правильно?

Спасибо за интерес!

2

Re: Вставить гиперссылку в середину создаваемого параграфа

rizalut, а вы случайно не AutoCAD используете?
Сложно понять, что откуда и куда. Вы бы целый код из VBA для Word привели.

3

Re: Вставить гиперссылку в середину создаваемого параграфа

admin
VBA родной для Word'а.
Никаких AutoCAD'ов.
Завтра более детальный код распишу.

4

Re: Вставить гиперссылку в середину создаваемого параграфа

Вы лучше объясните, что вы хотите сделать? Я так понял, что вам нужно вставить гиперссылку, после нее добавить какой-то текст, а затем к этому тексту применить стиль Оглавление. Так?
Стиль Оглавление у вас стандартный или вы создали свой? Для чего вам нужно использовать этот стиль? Для создания оглавления?

5

Re: Вставить гиперссылку в середину создаваемого параграфа

admin
Спасибо за вопросы

Похоже, что я разобрался. Все проблемы были с непониманием:
1. где находится Range после операции добавления контента
- если вставляю текст - он выделяет текст
- если вставляю поле - он коллапсирует перед вставленным полем
2. как проще и удобней передвигать Range-у ноги.

Я делаю макрос, создающий оглавление в фирменном стиле организации.
Там плавающая номерация страниц и другие вещи, которые формат вордовского оглавления не позволяет вставить.

6

Re: Вставить гиперссылку в середину создаваемого параграфа

Столкнулся с очередным подводным камнем

Абзац 1 является закладкой.
Вставляю между существующими абзацем 1 и абзацем 2 абзац.
Абзац 2 является закладкой.

Но понятия "между" не существует. Вставка происходит в адрес существующего символа.

Получается, что я либо оттяпываю во вставляемый абзац "]" (завершающую границу 1 абзаца), либо "[" (начинающую границу 2 абзаца).

Вставляю так:
Set myRange = .Bookmarks("1 абзац").Range
myRange.Collapse (wdCollapseEnd)
myRange.Text = "someText" & Chr(13)

В результате перед символом абзаца во вставленном абзаце появляется  "["(начинающаяся граница следующего абзаца). А сам следующий абзац остается без неё.


Как вставить абзац, не тронув границы закладок?

Отредактировано rizalut (07.01.2010 00:30:14)

7

Re: Вставить гиперссылку в середину создаваемого параграфа

Вот так примерно:

Sub addBM()
Dim bm As Bookmark
Dim myRange As Range
Set bm = ActiveDocument.Bookmarks("abzac1")
Set myRange = ActiveDocument.Range(Start:=bm.End, End:=bm.End)
myRange.InsertAfter Chr(13) & "текст"
End Sub

8

Re: Вставить гиперссылку в середину создаваемого параграфа

Увы, результат и этого кода у меня:

[Первая закладка¶]

текстВторая закладка¶]

А нужно:
[Первая закладка¶]
текст¶
[Вторая закладка¶]

Почему то вставка нового параграфа мистическим образом  разрушает закладку следующего параграфа.
Пока вижу только такой выход:
1. пересозать первую закладку, чтобы символ параграфа вывести из нее
[Первая закладка]¶
2. установить Rang перед ее символом параграфа
[Первая закладка]|¶
3.Вставить символ параграфа и текст, по идее должно получиться так:
[Первая закладка]¶
текст¶
[Вторая закладка¶]

а на практике придется код переделывать - вылазит лишний параграф sad
Но вторая закладка уже не разрушается smile

Неужели никак нельзя просто вставить параграф, не порушив следующую за ним закладку?

9

Re: Вставить гиперссылку в середину создаваемого параграфа

Так потому что у вас зачем-то вставлен в закладку 2 или закладку 1 знак абзаца. Зачем он там нужен?
P.S. Вы можете приложить ваш образец документа с этими закладками?
Либо добавьте символ абзаца в макрос после текста. Но сдается мне, что у вас просто неправильно определены закладки (с лишними символами в них).

10

Re: Вставить гиперссылку в середину создаваемого параграфа

Вот как выглядят у меня текст и закладки для абзацев:
Вставить гиперссылку в середину создаваемого параграфа
А как у вас они выглядят?

11

Re: Вставить гиперссылку в середину создаваемого параграфа

Вот, родил, может поможет кому

Алгоритм, как не трогая закладку, начинающуюся с начала следующего абзаца,
вставлять перед ним в цикле поабзацно текст

Задача: вставить абзац между закладками
[Первая закладка¶]
[Вторая закладка¶]

1. пересоздать первую закладку, чтобы символ параграфа вывести из нее
(после цикла можно пересоздать ее, включив символ параграфа)
[Первая закладка]¶

Цикл-----------------------------------------------
2. Сколлапсить Rang перед символом текущего параграфа
[Первая закладка]|¶


3. Вставить символ параграфа и текст, по идее должно получиться так:
[Первая закладка]¶
текст¶
Енд цикла------------------------------------------

12

Re: Вставить гиперссылку в середину создаваемого параграфа

admin
Да, в закладку вставлен символ абзаца.
Закладки делал в первый раз, раньше с ними не сталкивался.
Когда выделяешь текст, Word автоматически выделяет и знак параграфа.
Чтобы исключить его, нужно прилагать дополнительные усилия.
Вряд ли какая нибудь секретарша будет это старательно делать sad

Думаю, что достаточно сделать процедуру проверки,
в цикле убирающую из всех закладок документа знак параграфа.

13

Re: Вставить гиперссылку в середину создаваемого параграфа

Согласен, надо переопределять закладки, если там есть паразитные символы.