Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Заблокирован
1

Макрос в Word'е

02.09.2011, 11:14. Показов 1852. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток.

Ситуация такова:
есть документ со строками типа
02 00 00 00 AD B4 10 00 9B 90 4E 1E 00 00 DE 02 00
04 00 00 00 AD B4 10 00 9B 90 4E 1E 00 00 FC 02 00
70 00 00 00 AD B4 10 00 9B 90 4E 1E 00 00 FC 02 00
...
то-есть протокол обмена в 16-ричном виде.

Я пытаюсь сделать вот что: выделяю 2-4 байта(один байт, например "FC") и запускаю макрос.
Он должен сделать следующее: покрасить выделенное в красный цвет, перед выделением поставить #, перейти в конец строки, перевести то что было выделено из 16-ричной в 10-ичную, записать в конце строки и покрасить то что записал.

Так как с макросами я не ознакомлен, в основном пишу код через запись макроса, возникают трудности.
Попытался написать, но макрос получился глючный, то работает, то вылетает на начало страницы, то "непонятно".
То что написал:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Dim s As String, n As Long, z() As String, i As Integer
    Dim pos1 As Integer, pos2 As Integer
    n = 0
    pos1 = Selection.Start
    'pos2 = Selection.End
    Selection.Font.Color = wdColorRed
    z = Split(Trim(Selection.Text), " ")
    Selection.End = pos1
    Selection.TypeText Text:="#"
    's = ""
    For i = LBound(z) To UBound(z)
        n = n + (CLng(CLng("&H" + z(i)) * 2 ^ (i * 8)))
    Next
    Selection.EndKey Unit:=wdLine
    pos1 = Selection.Start
    Selection.TypeText Text:="  "
    Selection.TypeText Text:=(CStr(n / 10))
    Selection.TypeText Text:=" êã."
    pos2 = Selection.End
    Selection.Start = pos1
    Selection.MoveRight Unit:=wdCharacter, Count:=pos2 - pos1, Extend:=wdExtend
    Selection.Font.Color = wdColorRed
Как сделать чтоб он работал(оптимизация кода не важна)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2011, 11:14
Ответы с готовыми решениями:

Как в Wordе программно установить режим разметки страницы?
Как можно в Wordе программно установить режим разметки страницы? Что то я никак не пойму как это...

Как по двум ключевым словам выделить текст в Wordе
Мне надо выделить по двум известным мне словам текст в Документе Word 97. Слова я нахожу с помощью...

Как перставить + с конца предложения на начало в Wordе?
Как найти в тексте предложения с плюсами в конце и переставить плюс на начало предложения? ...

Макрос вставки файлов в листы-Необходимо изменить ниже приведённый макрос
Необходимо изменить ниже приведённый макрос, взятый с форума. Необходима помощь. Буду признателен....

7
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.09.2011, 11:30 2
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
то работает, то вылетает на начало страницы, то "непонятно".
В VBA есть дебаггер. Пошаговая отладка еще никому не вредила.
1
Заблокирован
02.09.2011, 11:41  [ТС] 3
Хорошо погоняю дебаггером.

Еще есть вопрос: как поставить каретку в определенную позицию?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.09.2011, 12:09 4
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
как поставить каретку в определенную позицию?
используй методы объекта Selection
1
Заблокирован
02.09.2011, 12:32  [ТС] 5
Цитата Сообщение от Vourhey Посмотреть сообщение
используй методы объекта Selection
Думал, что что-то специальное есть.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
02.09.2011, 12:34 6
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
Думал, что что-то специальное есть.
Не понял фразы. Вообще-то объект selection и есть это "специальное". Позиция курсора - это выделение длиной в 0. Что еще нужно для счастья...
1
Заблокирован
06.09.2011, 11:18 7
Dzhej-Dzhej,
а так:
Код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Процедура1()
    Dim s As String, n As Long, z() As String, i As Integer
    z = Split(Trim(Selection.Text), " ")
    Selection.Font.Color = wdColorRed
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=False
    Selection.TypeText Text:="#"
    For i = LBound(z) To UBound(z)
        n = n + (CLng(CLng("&H" + z(i)) * 2 ^ (i * 8)))
    Next
    Selection.EndKey Unit:=wdLine
    Selection.TypeText Text:="  "
    Selection.TypeText Text:=(CStr(n / 10))
    Selection.TypeText Text:=" кг."
End Sub
1
Заблокирован
06.09.2011, 11:27  [ТС] 8
так не идет

в конечном итоге сделал так
код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Dim s As String, n As Long, z() As String, i As Integer
    Dim pos1 As Long, pos2 As Long
    n = 0
    pos1 = Selection.Start
    Selection.Font.Color = wdColorRed
    z = Split(Trim(Selection.Text), " ")
    Selection.End = pos1
    Selection.TypeText Text:="#"
    For i = LBound(z) To UBound(z)
        n = n + (CLng(CLng("&H" + z(i)) * 2 ^ (i * 8)))
    Next
    Selection.EndKey Unit:=wdLine
    pos1 = Selection.Start
    Selection.TypeText Text:="  "
    Selection.TypeText Text:=(CStr(n / 10))
    Selection.TypeText Text:=" кг."
    pos2 = Selection.End
    Selection.Start = pos1
    Selection.Font.Color = wdColorRed

вроде работает, и хорошо, всеравно это промежуточное звено
0
06.09.2011, 11:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2011, 11:27
Помогаю со студенческими работами здесь

Макрос: Написать макрос по сравнению двух таблиц для нахождения несоответствий...
знатоки, прошу помощи в еще одном деле: есть два листа, --в одном список: яблоко, груша, слива, ...

Если макрос на VBA переписать на С++, то макрос станет работать быстрее?
Всем привет!) У меня есть макрос написанный в Екселе на VBA, если его переписать на С++ , то...

Макрос: из PowerPoint развернуть Exel и вызвать уже в нём макрос
Собственно сабж. Работая в презентации PowerPoint нужно по клику на кнопку с прикреплённым макросом...

Макрос хранимый в отдельном файле или макрос на обновление макросов
Уважаемые форумчане, подскажите советом. Есть у меня файл Excel с макросами, которые я поддерживаю...

Макрос делает копию листа и сохраняет в новую книгу, но макрос в новой не работает
Есть макрос в книге. Он копирует текущий лист, создает новую книгу и копирует в новую книгу лист. ...

Макрос, чтобы другой макрос распихал сам по N файлам
Может эта тема уже тут звучала, да поиск не помог... Просто проблема в том, что макрос постоянно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru