Word 2010 Mail-Merge: вывод текста без завершающей новой строки

Я использую программу, которая автоматически генерирует отчеты с использованием шаблонов Word. Другими словами, я не могу изменить код, который предварительно обрабатывает текст перед чтением шаблоном.

Тем не менее, есть текстовые записи, которые имеют завершающую новую строку, а некоторые - нет. Я хотел бы удалить завершающую новую строку, если она существует.

Пример: { MERGEFIELD dbEntry }

dbEntry может иметь завершающую новую строку. Если это так, я хотел бы удалить его при отображении в сгенерированном документе с использованием кода шаблона.

Это возможно? Если нет, есть ли какие-нибудь «хаки» в MS Word, которые я могу сделать, чтобы он «выглядел» так, как будто новой строки нет?


person Bryan    schedule 06.11.2013    source источник


Ответы (1)


Некоторые способы обойти это включают следующее, но это зависит от того, что вам разрешено делать с шаблоном. Следует отметить, что вы можете столкнуться с ограничением длины текста в 255 символов в различных местах приложений Office и API:

а. в особом случае, когда все данные являются числовыми или датированными, вы можете рассмотреть возможность применения числового формата/формата даты в поле. Это, по сути, удалит завершающую новую строку.

б. если вы знаете, что ваш источник данных поддерживает диалект SQL с функциями, которые позволят вам удалить новую строку, и вы знаете все имена полей в каждом источнике данных, вы можете рассмотреть возможность подключения с помощью OpenDataSource и выдачи соответствующий SQL. Но имейте в виду, что общее ограничение на оператор SQL составляет 511 символов — 255 для некоторых источников данных. Даже для текстовых файлов это может быть осуществимо, поскольку вы можете использовать текстовый IISAM Jet/ACE, который позволяет вам использовать Jet SQL. Есть вариации на эту тему.

в. Вы можете использовать события MailMerge в объектной модели Word для извлечения полей из источника данных по мере выполнения слияния. Как правило, вы затем удаляете новую строку, вставляете результат в переменную документа и используете поле DOCVARIABLE для вставки результата. Но VBA будет извлекать только первые 255 символов поля, поэтому, если у вас есть более длинные тексты, вы должны иметь возможность открыть источник данных другим способом также, получить правильный текст (ы ) из правильной записи, обработайте и вставьте ее.

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

person Community    schedule 12.11.2013