MailMerge (слияние) и неразрывные пробелы

Программирование на Visual Basic for Applications
Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

MailMerge (слияние) и неразрывные пробелы

Сообщение Bagathur » 03.10.2006 (Вт) 0:39

Столкнулся с небольшой проблемой, к которой пока даже не знаю как подступиться.
Дело в том, что в Excell при установке формата ячейки "денежный" или "числовой" с разделителями групп разрядов между разрядами при отображении ставится символ - "неразрывный пробел" (пробел, по которому не происходит переноса на другую строчку).
При выполнении слияния и установке значений полей в "письме" неразрывные пробелы воспринимаются Word-ом как обычные и происходит перенос суммы и чисел на две и более строчек.
Если кто-нибудь сталкивался - подскажите плиз как этого избежать? Или в каком направлении следует искать?

Единственное, что пока пришло на ум - форматировать значения ячеек "вручную" кодом VBA, разделяя разряды через Alt+0160
'Til the blood on your hans is the blood of the King!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.10.2006 (Вт) 2:27

Использовать excel как источник голых чисел, а форматирование наложить на поля word?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

Сообщение Bagathur » 03.10.2006 (Вт) 7:28

Подскажи как это будет выглядеть в {MERGEFIELD}?
'Til the blood on your hans is the blood of the King!

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 03.10.2006 (Вт) 9:30

в справке набери: общие ключи

Числовой формат (\#) Определяет вид числового значения, в том числе число знаков после десятичного разделителя и обозначение денежной единицы
зы я не уверен что это то что нужно, но..
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

Сообщение Bagathur » 03.10.2006 (Вт) 12:42

Пример из справки не совсем подходит -
пробел (разделитель групп разрядов)
Разделяет число на группы по три цифры в каждой. Например, { = NetProfit \# "# ### ###" } возвращает «2 456 800».

работает если поле содержит только число и с известным количеством цифр.
Интересно, почему Excell считает неразрывные пробелы в ячейке, отформатированной с разделителями группа разрядов, пробелами простыми?
'Til the blood on your hans is the blood of the King!

Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

Сообщение Bagathur » 03.10.2006 (Вт) 12:51

Даже "принудительно" заменённые в mergefield неразрывные пробелы сливаются в Word-е как простые и разделение на несколько строк всё равно происходит.
При этом если делать copy-paste из ячейки Excell в Word то неразрывные пробелы не заменяются на простые. Получается, что значение неформатированных mergefields не всегда равно значению поля источника данных?
'Til the blood on your hans is the blood of the King!

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 03.10.2006 (Вт) 13:20

у себя проверил, слил все работает в поле без ключей отображает как и в exel с разделителем в виде пробела, на вкладке панель управления-языки и стандарты-числа - разделить груп разрядов вроде стоит пробел, а какой (разрывный или нет) я не знаю
попробуй введи пробел в качестве разделителя, может прокатит
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

Сообщение Bagathur » 03.10.2006 (Вт) 14:57

Включи в Word "отображать непечатные символы" (похожий на греческую букву "пи" символ слева от масштаба в стандартной панели инструментов), обычный пробел там выглядит как висящая по центру строки точка, неразрывный - как маленький кружок в вехней части строки.
В региональных настройках для России для разделения групп разрядов по умолчанию используется неразрывный пробел, я его переставил на скопированный из Word неразрывный, однако это всё равно не помогло.
Неразрывный пробел ставится в Excell через Alt+0160, в Word - Ctrl+Alt+Space. Используя замену
Код: Выделить всё
.Range("хх:хх").Replace What:=" ", Replacement:=" "
'первое " " - просто пробел, второе " " - неразрывный, хотя и выглядят одинаково
'подтвержение о произведённых заменах Excell выдаёт

я могу получить в поле слияния Excell то, что я хочу - число, группы разряда котрого разделены именно неразрывными пробелами. Однако при выполнении слияния с Word все неразрывные пробелы меняются на обычные. При копировании же текста из ячейки Excell в Word "вручную" неразрывные пробелы сохраняются.
Последний работающий вариант, который получился - использовать на результате слияния замену на каждую из 10 цифр (Replace What:="1 ", Replacement:="1 ", 1+пробел на 1+неразрывный пробел). Пока это не мешает, но теоретически могут быть проблемы с длинными номерами.
Но вопрос-то остался - почему при слиянии вводятся не те значения полей?
'Til the blood on your hans is the blood of the King!

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 03.10.2006 (Вт) 15:34

скопировал из панели региональных настроек, у меня стоит тот самый кружок вверху "неразрывный пробел"
вот вид строки в exel 457 854 546,00р.
вот вид поля в word 457 854 546,00р.
и exel и word 2000
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Bagathur
Обычный пользователь
Обычный пользователь
 
Сообщения: 88
Зарегистрирован: 10.08.2006 (Чт) 12:36
Откуда: Moscow

Сообщение Bagathur » 04.10.2006 (Ср) 9:14

Да то что вид такой это понятно, но тут не видно что это - просто пробел или всё-таки неразрывный - в обоих случаях и поле, и строка будут выглядеть одинаково, хотя значения в них будут разные.
'Til the blood on your hans is the blood of the King!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 55

    TopList