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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2011, 07:19   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию поле типа MACROBUTTON

Имеется в Ворде поле типа MACROBUTTON, оно пользователем выделено, то есть перед тем как пользователь по нему сделает двойной щелчёк мышью для его запуска поле выделится
как узнать текст который оно отображает???
Код_выделенного_поля = ActiveDocument.Fields(Selection.Fie lds(1).Index).Code.Text
Результат_выделенного_поля = ActiveDocument.Fields(Selection.Fie lds(1).Index).Result
Текст_выделенного_поля = ActiveDocument.Fields(Selection.Fie lds(1).Index).????????

MsgBox Selection.Text не помогает, MsgBox показывает квадрат
Спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 12.06.2011, 15:06   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

У поля MACROBUTTON в Ворде есть свойство Сообщение, как его узнать??????
Спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Старый 13.06.2011, 02:20   #3
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

ActiveDocument.Fields(...).Code.tex t для поля MACROBUTTON вернёт строчку вида
"MACROBUTTON ИмяМакроса Сообщение"
Cообщение это и есть отображаемый текст.
Aent вне форума Ответить с цитированием
Старый 13.06.2011, 11:04   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

конечно можно отбрасывать
Код:
Dim Код_выделенного_поля As String
Код_выделенного_поля = Trim$(ActiveDocument.Fields(Selection.Fields(1).Index).Code)

Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
'искать по всему тексту, по умолчанию False - будет найдено только первое совпадение
reg.Global = True
'+ означает, что заменяем два, три, четыре и более пробелов подряд на один пробел
reg.Pattern = " +"
Код_выделенного_поля = Trim(reg.Replace(Код_выделенного_поля, " "))
'Debug.Print Код_выделенного_поля
'заменяем пробел, следом идущую запятую на запятую, то есть удаляем пробел перед запятой
reg.Pattern = " ,"
Код_выделенного_поля = Trim(reg.Replace(Код_выделенного_поля, ","))
'Debug.Print Код_выделенного_поля

'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
Set reg = Nothing

Dim Первый_пробел_в_тексте_кода_поля As Integer
Первый_пробел_в_тексте_кода_поля = InStr(Код_выделенного_поля, " ")
Код_выделенного_поля = Trim(Right$(Код_выделенного_поля, (Len(Код_выделенного_поля) - Первый_пробел_в_тексте_кода_поля)))
Первый_пробел_в_тексте_кода_поля = InStr(Код_выделенного_поля, " ")
Код_выделенного_поля = Trim(Right$(Код_выделенного_поля, (Len(Код_выделенного_поля) - Первый_пробел_в_тексте_кода_поля)))
'Debug.Print Код_выделенного_поля
думал есть метод узнать одной строкой
Ципихович Эндрю вне форума Ответить с цитированием
Старый 13.06.2011, 13:24   #5
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю
думал есть метод узнать одной строкой
Есть
Код:
Debug.Print StrReverse(Split(StrReverse(Trim$(Selection.Fields(1).Code.Text)))(0))
В предположении, что в выделении одно поле
(И что финальные пробелы в "сообщении" можно игнорировать.
Aent вне форума Ответить с цитированием
Старый 13.06.2011, 14:04   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

это те же отбрасывания, ну ладно нет так нет
просто я раньше имя файла без разрешения искал путём откидывания разрешения, а потом узнал, что можно узнать напрямую
>В предположении, что в выделении одно поле
Конечно, умудриться надо два макробутона нажать вместе
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поле в Ворде типа ТОС Ципихович Эндрю Microsoft Office Word 0 10.05.2011 18:53
Поле типа TIMESTAMP и Like tarakan1983 БД в Delphi 6 20.09.2010 15:00
поле типа BigInt + TIBTable SNUPY БД в Delphi 2 04.02.2010 12:30
Вставка записи в поле графического типа Bibigul БД в Delphi 3 10.04.2007 16:07