Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 22:34   #1
sunnyws
Новичок
Джуниор
 
Регистрация: 09.06.2011
Сообщений: 8
По умолчанию Создание закладки

Пишем макрос по созданию закладки.

Код:
Private Sub CommandButton1_Click()
Dim Bm As String

Bm = ActiveDocument.Bookmarks.Add
Bm = Replace(Selection.Text, " ", "_")
Selection.Range
'Set MyBook = Selection.Range(Start:=1, End:=10)
'If Selection.Range > 10 Then

If Selection.Range < 10 Then
 TextBox1 = MsgBox("Ошибка", vbOKOnly + vbCritical, "Ошибка")
End If
End Sub
Не получается создать закладку, в которой пробелы и запятые будут заменяться на подчеркивание, а именем закладки будут первые 10 символов. Закладка должна автоматически создаваться если выделить текст в документе и нажать кнопку формы.
Подскажите пожалуйста, что не так в коде? Заранее спасибо
sunnyws вне форума Ответить с цитированием
Старый 10.06.2011, 23:41   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Может, так? На подчеркивание заменяются точки, запятые, пробелы.
Код:
Private Sub CommandButton1_Click()
If Selection.Characters.Count < 10 Then
    MsgBox "Текст слишком короткий!", vbCritical, "Ошибка"
Else
    ActiveDocument.Bookmarks.Add Replace$(Replace$(Replace$(Left$(Selection, 10), ".", "_"), " ", "_"), ",", "_"), Selection.Range
End If
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 11.06.2011 в 01:42. Причина: Заменил Selection на Left$(Selection, 10)
Казанский вне форума Ответить с цитированием
Старый 10.06.2011, 23:54   #3
sunnyws
Новичок
Джуниор
 
Регистрация: 09.06.2011
Сообщений: 8
По умолчанию

Спасибо.
А вот еще по этому макросу вопрос, не могу разобраться с проверкой:
Если выделено больше 10 символов, то в идентификатор закладки записываются только первые 10 выделенных символов, и если выделенный текст начинается с цифры, то в начало идентификатора приписывается буква "а".
Там в коде выше было, поняли только, что надо использовать что-то вроде
Код:
Set MyBook = Selection.Range(Start:=1, End:=10)
If Selection.Range > 10 Then
читаем мсдн, но там пока ничего в тему найти не смогли =(
sunnyws вне форума Ответить с цитированием
Старый 11.06.2011, 01:48   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Сорри, упустил про первые 10. Так:
Код:
Private Sub CommandButton1_Click()
Dim s$
If Selection.Characters.Count < 10 Then
    MsgBox "Текст слишком короткий!", vbCritical, "Ошибка"
Else
    s = Replace$(Replace$(Replace$(Left$(Selection, 10), ".", "_"), " ", "_"), ",", "_")
    If IsNumeric(Left$(s, 1)) Then s = "a" & s
    ActiveDocument.Bookmarks.Add s, Selection.Range
End If
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.06.2011, 15:14   #5
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

точка, пробел, запятая
не всё - что нельзя применять в имени закладки!!
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.06.2011, 00:12   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Согласен, добавил:
Код:
Option Compare Text

Private Sub CommandButton1_Click()
Dim s$, i&

If Selection.Characters.Count < 10 Then
    MsgBox "Текст слишком короткий!", vbCritical, "Ошибка"
Else
    s = Left(Selection, 10)
    For i = 1 To 10
        If Mid$(s, i, 1) Like "[!0-9A-ZА-ЯЁ]" Then Mid(s, i, 1) = "_"
    Next
    If Left$(s, 1) Like "[0-9_]" Then s = "a" & s
    ActiveDocument.Bookmarks.Add s, Selection.Range
End If
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 12.06.2011 в 02:20.
Казанский вне форума Ответить с цитированием
Старый 12.06.2011, 07:08   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

Код:
 If Mid$(s, i, 1) Like "[!0-9A-ZА-ЯЁ]" Then Mid(s, i, 1) = "_"
вроде Ucase не хватает
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.06.2011, 07:29   #8
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

ой не заметил
Option Compare Text
извините
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TWebBrowser Закладки aesoem Компоненты Delphi 7 01.05.2021 21:05
Закладки в WORDе ahod Microsoft Office Word 4 23.10.2009 00:49
закладки в ворде delphi7 Помощь студентам 9 17.07.2009 11:10
Opera и закладки blackstersl Софт 3 14.01.2009 14:20
Добавить в закладки Никки JavaScript, Ajax 2 09.02.2008 17:43