В общем, по работе часто приходится формировать однотипные вордовские документы (акты, письма и т.п.). Нашел подходящие куски кода, немного подогнал под себя и заработало кое-как. Если коротко, то макросом, например, фраза {СуммаБезНДС} в шаблоне( .dot) заменяется на число из таблицы, скажем, 3 443 4343 434,44грн. Циклом макрос пробегается по всей таблице и на основании разных критериев определяет, какие документы из каких шаблонов создавать, и какими данными их заполнять.
Все бы ничего, но разделителем разрядов (который нужен для удобочитаемости) по умолчанию есть простой пробел. Следовательно, после подстановки большие числа иногда расползаются на две строки, что не есть хорошо.
Первым делом, подумал, что стоит изменить сам разделитель на неразрывный пробел (Alt+0160). Но не помогло... Во вкладке Дополнительно ввел, как мне надо - на выходе простой пробел все равно.
Пока что временно решил написать пользовательскую функцию для преобразования пробелов:
[vba]
Код
Function NoBreakingSpacesNumber(cell As Range) As String If IsNumeric(cell) Then NoBreakingSpacesNumber = Trim$(WorksheetFunction.Substitute(cell.Text, " ", " ")) // (Alt+0160) Else NoBreakingSpacesNumber = Trim$(cell.Text) End If End Function
[/vba]
Сам макрос подстановки от нее пока сильно тормозить не стал. Годится, в общем. Но из-за подобного преобразования числа из вордовских документов уже перестают быть числами. То есть, если вдруг придется их обратно копировать в тот же Excel, из-за пробелов они воспринимаются исключительно как текст.
В принципе, это не критично. Но чувствую, что решение мое корявое какое-то.
Подскажите, есть ли какой-то более элегантный способ решить мою проблему? Может, кто-то уже сталкивался. Был бы очень благодарен!
Ребята, нужен совет со стороны.
В общем, по работе часто приходится формировать однотипные вордовские документы (акты, письма и т.п.). Нашел подходящие куски кода, немного подогнал под себя и заработало кое-как. Если коротко, то макросом, например, фраза {СуммаБезНДС} в шаблоне( .dot) заменяется на число из таблицы, скажем, 3 443 4343 434,44грн. Циклом макрос пробегается по всей таблице и на основании разных критериев определяет, какие документы из каких шаблонов создавать, и какими данными их заполнять.
Все бы ничего, но разделителем разрядов (который нужен для удобочитаемости) по умолчанию есть простой пробел. Следовательно, после подстановки большие числа иногда расползаются на две строки, что не есть хорошо.
Первым делом, подумал, что стоит изменить сам разделитель на неразрывный пробел (Alt+0160). Но не помогло... Во вкладке Дополнительно ввел, как мне надо - на выходе простой пробел все равно.
Пока что временно решил написать пользовательскую функцию для преобразования пробелов:
[vba]
Код
Function NoBreakingSpacesNumber(cell As Range) As String If IsNumeric(cell) Then NoBreakingSpacesNumber = Trim$(WorksheetFunction.Substitute(cell.Text, " ", " ")) // (Alt+0160) Else NoBreakingSpacesNumber = Trim$(cell.Text) End If End Function
[/vba]
Сам макрос подстановки от нее пока сильно тормозить не стал. Годится, в общем. Но из-за подобного преобразования числа из вордовских документов уже перестают быть числами. То есть, если вдруг придется их обратно копировать в тот же Excel, из-за пробелов они воспринимаются исключительно как текст.
В принципе, это не критично. Но чувствую, что решение мое корявое какое-то.
Подскажите, есть ли какой-то более элегантный способ решить мою проблему? Может, кто-то уже сталкивался. Был бы очень благодарен! Невилл