Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,

Статус
Закрыто для дальнейших ответов.

mashann

Участник
Топикстартер
Сообщения
1
Реакции
0
В вордовском документе нужно большие числа
из формата 230000115,0 переделать в 230 000 115,0

с пробелами после 3 символов
по 3 знака, можно ли это автоматически сделать?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Для начала перебираете все слова в тексте на предмет число это или нет. Такой вот функцией, например:

Declare Function StrSpn Lib "SHLWAPI" Alias _
"StrSpnW" (ByVal psz As Long, ByVal pszSet As Long) As Long

Public Function IsDecimal (ByVal sString As String) As Boolean
Const DECIMAL_NUM As String = "0123456789,-"
Dim iPos

iPos = StrSpn (StrPtr(sString), StrPtr(DECIMAL_NUM)
' если возвращается значение, не равное длине исходной строки,
' то значит найдены символы, не являющиеся цифрами
IsDecimal = (iPos = Len(sString))
End Function

Потом в от позиции запятой до конца слова в обе стороны через каждые 3 символа вставлять пробел.
 

splxgf

12 лет на форуме
Сообщения
7 744
Реакции
3 425
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Для выборки чисел по формату достаточно обычных функций поиска с подстановочными знаками, для замены тоже.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

А как в VBA регэкспом пользоваться?
Да нет, все равно не пойдет, придется тогда все маски для чисел вбивать, или формат чисел стандартный?
 

splxgf

12 лет на форуме
Сообщения
7 744
Реакции
3 425
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Правка-Заменить-подстановочные знаки, из VBA управляется аналогично.
Конечно придется все маски вбивать, но забить это в макрос и прописать цикл труда не составит.
Если бы из замены можно было создавать поля, то можно было обойтись одной заменой, а в формате поля указывать нужный формат чисел.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Тогда так: искать в макросе регэкспом слова по формату чисел, преобразовывать, в, собственно, число, а число в нужном формате вставлять на место найденного.
 

splxgf

12 лет на форуме
Сообщения
7 744
Реакции
3 425
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

В искомое выражение можно разбить на части и в замене указывать найденные выражения с разделением по пробелу.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Да не получится так. Как регекспу можно сказать, чтобы строку в число преобразовывал и обратно? А напрямую маски вбивать - некузяво, их может быть очень много.
 

Buka

Участник
Сообщения
2
Реакции
0
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Есть похожая задачка вот думаю как бы решить:
нужно в word найти девять идущих подряд цифр и представить их в определенном виде, а точнее
было: 000000000
стало: 0 000 00 000
 

Evgen

Registered User
15 лет на форуме
Сообщения
2 054
Реакции
984
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Найти: ([0-9]{1})([0-9]{3})([0-9]{2})([0-9]{3})
Заменить на: \1 \2 \3 \4

Обо всём этом написано в справке Ворда.
Не ленитесь жать F1.
 

Buka

Участник
Сообщения
2
Реакции
0
Ответ: Как автоматически в Word разбить пробелами большие числа по 3 символа? Напр. 2303004,1 на 2 303 004,1

Огромное спасибо. теперь понятно как это работает, без таких вот примеров не разобраться как работают подстановочные знаки.
 
Статус
Закрыто для дальнейших ответов.