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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 21:48   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как поставить пробел, через 8 знаков

Как поставить пробел, через 8 знаков. В аттаче текстовый файл, сохранить нужно в том же формате(или doc)
Фрагмент примера:

Код:
Исходник
55aa7be91102000000000000000000000000000000000000c40100000000494.........
Результат
55aa7be9 11020000 00000000 00000000 00000000 00000000 c4010000 00004942 ........
Вот макрос для этого(может кому пригодится)
Код:
Sub Пробел()
For f = 0 To 20000 ' Количество строк
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.TypeText Text:=" "
    Next
End Sub

Последний раз редактировалось valerij; 10.04.2009 в 23:43.
valerij вне форума Ответить с цитированием
Старый 11.04.2009, 19:25   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Если тема интересна, то смотреть лучше тут.

А мой вариант работает с 16-теричными цифрами прямо в окне Word.
Код:
Sub SwitchSandwich() 'находит в тексте восьмёрки 16-теричных цифр и разделяет их пробелами'

Static odd As Boolean  'переменная, отслеживающая нечётные вызовы'
odd = Not odd
Selection.HomeKey wdStory           'курсор - в начало документа Word'

With Selection.Find
    
    Select Case odd
    Case True
        .Text = "([0-9A-Fa-f]{8})"                  'очередные 8 шестнадцатеричных цифр'
        .Replacement.Text = "\1" & Space(1) 'добавляем пробел к группе из 8 цифр'
    Case False
        .Text = "([0-9A-Fa-f]{8}) "         'очередные 8 шестнадцатеричных цифр и пробел'
        .Replacement.Text = "\1"            'убираем пробел после группы из 8 цифр'
    End Select
    
        .MatchWildcards = True              'отмечен флажок Подстановочные знаки'
        .Wrap = wdFindContinue          'переходим (после добавления) к очередной группе'
        .Execute Replace:=wdReplaceAll  'выполнение замены'
        
        .Text = ""                               'очистка поля Найти:'
        .Replacement.Text = ""          'очистка поля Заменить на:'
        .MatchWildcards = False         'сброс флажка Подстановочные знаки'
        .Execute                                  'выполнение очистки'
        
End With

End Sub
Вложения
Тип файла: doc WordSplitterSpark.doc (62.0 Кб, 18 просмотров)

Последний раз редактировалось Sasha_Smirnov; 11.04.2009 в 20:12.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 12.04.2009, 22:25   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Если тема интересна, то смотреть лучше тут.
Видел, ну с Excel -ем все понятно, а вот почему в Word -е, так, см. скрин, красным, не 8 разрядов, а четыре??
Изображения
Тип файла: jpg www.jpg (58.6 Кб, 124 просмотров)
valerij вне форума Ответить с цитированием
Старый 12.04.2009, 23:28   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Так мой код был написан. Он только 4-байтовые (по 8 цифр) "слова" снабжает пробелом. А каждое 8-е слово в вашем биосе — двухбайтовое (4 цифры), а за ним сразу идёт символ-терминатор (который выглядит в word-документе как знак абзаца).

Я без понятия, считываются ли эти "абзацы" при загрузке, иначе говоря — важны ли они как кодовые символы. Вот так и сделал.

Кстати, у меня секунд за 30—40 ваш текст "прошился" пробелами. А вообще-то поиск (многократный) в формате doc(x) — вещь не суперскоростная, быстрее в txt. Ну, ради разнообразия, прилагаю следующий
Код:
Sub OctSandwich() 'Находит в тексте восьмёрки 16-теричных цифр, добавляя после них пробел.
'При этом в тексте до 16-теричных цифр не должно быть других цифр, идущих более трёх подряд.'

Selection.HomeKey wdStory               'курсор - в начало документа Word'

With Selection.Find
    
.Text = "([0-9a-f]{4}*[0-9a-f]{4})" 'очередные 8 шестнадцатеричных цифр'
.Replacement.Text = "\1" & " "          'добавляем пробел к группе из 8 цифр'

.MatchWildcards = True              'в окне (по Ctrl-F) отмечен флажок Подстановочные знаки'
.Wrap = wdFindContinue              'переходим (после добавления) к очередной группе'
.Execute Replace:=wdReplaceAll  'выполнение замены'

.Text = ""                               'очистка поля Найти:'
.Replacement.Text = ""          'очистка поля Заменить на:'
.MatchWildcards = False         'сброс флажка Подстановочные знаки'
.Execute                                  'выполнение очистки'
        
End With
End Sub
Вложения
Тип файла: doc WordSmart.doc (79.0 Кб, 12 просмотров)

Последний раз редактировалось Sasha_Smirnov; 13.04.2009 в 02:36. Причина: ввод сочетания ALT-S в приложенный файл; также привет тем, кто так удобно настроил тэги форматирования кода программ!!
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поставить пробел, через 8 знаков valerij Microsoft Office Excel 7 11.04.2009 04:24
сохранение чисел в файл через пробел(С++) Lorden Помощь студентам 6 09.04.2009 23:31
Как определить разность знаков у переменных бедный_студент Помощь студентам 11 22.03.2009 15:22
Как вставить в слове после любой буквы пробел? Stager Общие вопросы C/C++ 5 07.01.2009 14:05