Excel введена слишком длинная текстовая строка

Обновлено: 05.07.2024

По созданию колонтитулов
Пытаюсь создать колонтитулы с боковых сторон с помощью текстовых переменных
пример шаблона и итога — на рисунке
название главы длинное, не влазит в строку и "сминает"
как можно сделать, чтобы писал в 2-3 строки?
или как-то по-другому еще можно сделать такие колонтитулы?

отечеств. про

Ответ: вопрос.

Если заголовков не миллион, то я делаю переменные не по стилю параграфа, а по символьному и руками присваиваю тому куску заголовка, который гарантированно влезет.

1StRex

Участник

Ответ: вопрос.

Если заголовков не миллион, то я делаю переменные не по стилю параграфа, а по символьному и руками присваиваю тому куску заголовка, который гарантированно влезет.

Заголовков не мало, но дело даже не в этом
Это, как я понял "укорачивание" названия главы до размера колонтитула.

А вот хотелось бы не укорачивать, а писать полностью, пусть в 2-3 строки
Наверняка есть способ создания колонтитулов 2-3 строки
Я много раз такие видел

Eugenyus

Модератор

Ответ: вопрос.

Наверняка есть способ создания колонтитулов 2-3 строки
Я много раз такие видел Они делались без использования скользящих колонтитулов. Под каждый из них создавался свой шаблон, на который вручную, без автоматики, заносился нужный текст.
Или Вы видели не только сами колонтитулы, а то, как их создавали через переменные?

1StRex

Участник

Ответ: вопрос.

Или Вы видели не только сами колонтитулы, а то, как их создавали через переменные?

да нет, в готовых книгах видел.
Странно, что нет. По-моему их проще сделать, чем "сминать" слишком длинный текст

Придется что-то придумывать со стилями или тегами. Или вручную

OOleg

Участник

Ответ: вопрос.

Держите. Обратите внимание на спец. знаки в заголовке

Вложения

Eugenyus

Модератор

Ответ: вопрос.

А если следующий заголовок будет на две строки, что будет с колонтитулом?

OOleg

Участник

Ответ: вопрос.

Ага, недосмотрел. Не получается так.

OOleg

Участник

Ответ: вопрос.

Для 1–2-строчных. Для 3-строчных, наверное, проще ручками.

Вложения

Eugenyus

Модератор

Ответ: вопрос.

Можно в принципе и на первом варианте остановиться. А недостающее число строк в заголовке компенсировать набором End Nested Style Character-ов через пробел столько раз, сколько нужно, чтобы перекрыть все вложенные стили. Тогда в колонтитуле во всех незанятых строках будут стоять пробелы, ну и да ладно. Внимательности только понадобится прилично, чтобы не пропустить нигде ничего.

Всем привет, сегодня снова работаем с эксель таблицей и шаблоном в ворд, в этом видео я вам покажу как работать с большим текстом, если у нас допустим, в нашей ячейке будет содержаться текста значительно больше чем 255 символов.

Давайте возьмём пример из первого видео, перейдете по ссылке в описании на странице есть файл в архиве.

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

Давайте сделаем проверку длинны текста в ячейке, используя функцию ДЛСТР - длина строки. У нас здесь сейчас находится 15 символов.

Сделаем больше текста для этого я в Microsoft Word используя функцию LOREM() , которая сформирует случайный текст.

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

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

Давайте перейдём в Редактор Visual Basic, alt+f11 и посмотрим код прошлого примера.

Исправим название переменной адрес на текст, здесь исправим на текст и посмотрим что у нас получится.

Теперь откроем шаблон и заменим Адрес на Текст и исправим конструкцию для замены на &text .

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

Посмотрим, что теперь получится, изменю масштаб, для доступа к кнопке запуска макроса.

Появляется ошибка № 5854 - слишком длинный строковый параметр.

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

Давайте откроем диспетчер задач, существует проблема которую мы сейчас решим, иначе у нас при любой ошибке в работе макроса в Диспетчере задач в фоне остается запущен экземпляр Microsoft Word в котором рухнул наш шаблон.

Давайте ещё раз попробуем сформировать посмотрим, что у изменится.

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

Давайте теперь сделаем выход из нашей функции, где мои работаем, здесь у нас создание файла проходит нормально, этот кусок у нас нормально отрабатывает.

Вставим вот здесь следующий код:

Это у нас метка перехода, если произойдет ошибка, мы перейдём в конец модуля, вот здесь мы сделаем Exit Sub - Выход из модуля.

Ниже напишем ErrorHandler: наша метка и здесь нам нужно будет вставить код сохранения, закрытия и выхода из Word.

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

Сейчас мы исправим эту проблему, кстати гляну в диспетчер задач у нас Microsoft Word нигде не висит, и он нам не мешает. OK.

Теперь снова перейдём в редактор VBA. и разобьем переменную Text$ на фрагменты допустимой длины.

Ну кроме исправлю маленькую опечатку, тут естественно должен быть &text .

Дайте я посмотрю, что изменится, хотя даже если мы исправили это значение, всё равно ничего не получилось.

Теперь удалим снова бланк, вернемся вот сюда, зададим переменную temp равно Left возьмём от переменной Text$ 255 символов, снова создадим переменную temp2, воспользуемся теперь функцией Mid , мы возьмём начиная с 256 символа текст длиной 255 символов.

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

Сделаем с запасом, ещё разок скопирую и вставлю

Теперь мы шагнем от 256 + 255 равно 511, начиная с 512 символа мы опять шагнем на 255 символов.

Ещё продублирую строку замены, переменная temp3 , значение text3 .

Как нам указать в шаблоне заменяемые значения? А мы их ведем просто в наш шаблон, уже есть вот эта строка &text , мы её скопируем и вставим несколько раз, дописав числа 2 и 3.

То есть у нас всякий раз вот этот фрагмент текст будет заменяться на значения из наших переменных temp , temp2 , temp3 . Можно в коде VBA продолжать добавлять разбивку основного текста на части, но будьте внимательны, указывая смещение и длину символов. Соответствующе правки так же вносите в шаблон.

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

Впишемся ли мы в данное ограничение, О'кей, готово.

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

Следующие файлы так же сформировались, но тут у нас все осталось как обычно.

Вот таким простым способом вы можете обойти эту условность, ограничение в 255 символов, в принципе сама строковая переменная Text$ может очень много вместить в себя значений, но при работе вот этой функции FindText замена текста, вот здесь, мы не можем производить большие какие-то преобразования, но вот с такой разбивкой большого текста на переменные в принципе можно это продолжать дальше.

То есть у нас 512 + 255 получается 767, следующий шаг в 255 символов можно делать с 768 знака.

У нас же есть ещё место и дальше можно продолжать опять там делать дальше разбивку, если у вас будет очень большой текст.

Друзья, подскажите. при составлении формы в переменную заносятся данные (это данные на примерно 20 человек, фио, время и место рождения, прописка), и текста там хватает. Вставляется в ворд это всё путём поиска и замены ключевого слова.

Но трабл в том что, программа ругается на ".Text = AllDataOtvet", ибо строковый параметр слишком большой (больше 255 символов ошибка 5854), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично.
Как это счастье обойти?

Поможет ли буфер обмена?

Друзья, подскажите. при составлении формы в переменную заносятся данные (это данные на примерно 20 человек, фио, время и место рождения, прописка), и текста там хватает. Вставляется в ворд это всё путём поиска и замены ключевого слова.

Но трабл в том что, программа ругается на ".Text = AllDataOtvet", ибо строковый параметр слишком большой (больше 255 символов ошибка 5854), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично.
Как это счастье обойти?

Поможет ли буфер обмена? Skorpika

Но трабл в том что, программа ругается на ".Text = AllDataOtvet", ибо строковый параметр слишком большой (больше 255 символов ошибка 5854), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично.
Как это счастье обойти?

Поможет ли буфер обмена? Автор - Skorpika
Дата добавления - 15.01.2015 в 18:41

rText = "НАЧАЛО "
For i = 1 To 5
rText = rText & "Специально подготовленный фрагмент текста замены из нескольких строк общей длиной более 255 символов "
Next i
rText = rText & "КОНЕЦ"

With ActiveDocument.Content.Find
.ClearFormatting
.Text = "*Otvetchikifull*"
With .Replacement
.ClearFormatting
.Text = AllDataOtvet
End With
.Execute Replace:=wdReplaceAll
End With
End Sub

rText = "НАЧАЛО "
For i = 1 To 5
rText = rText & "Специально подготовленный фрагмент текста замены из нескольких строк общей длиной более 255 символов "
Next i
rText = rText & "КОНЕЦ"

With ActiveDocument.Content.Find
.ClearFormatting
.Text = "*Otvetchikifull*"
With .Replacement
.ClearFormatting
.Text = AllDataOtvet
End With
.Execute Replace:=wdReplaceAll
End With
End Sub

rText = "НАЧАЛО "
For i = 1 To 5
rText = rText & "Специально подготовленный фрагмент текста замены из нескольких строк общей длиной более 255 символов "
Next i
rText = rText & "КОНЕЦ"

With ActiveDocument.Content.Find
.ClearFormatting
.Text = "*Otvetchikifull*"
With .Replacement
.ClearFormatting
.Text = AllDataOtvet
End With
.Execute Replace:=wdReplaceAll
End With
End Sub

[/vba] Автор - Gustav
Дата добавления - 16.01.2015 в 10:17 Gustav, Спс
Может я не до конца правильно всё объяснил, но твой ответ в конечном ответе принес результат. ВБ по итогу ругалась на некоторые строки, но помогло всего лишь их удаление, по итогу получился вот такой код, правильный, неправильный, но работает (переменная олдатаответ содержащая любое число символов теперь спокойно заменяет ключевое слово)
[vba]

With ActiveDocument.Content.Find
.ClearFormatting
.Text = "*Otvetchikifull*"
With .Replacement
.ClearFormatting
.Text = AllDataOtvet
End With
.Execute Replace:=wdReplaceAll
End With

Gustav, Спс
Может я не до конца правильно всё объяснил, но твой ответ в конечном ответе принес результат. ВБ по итогу ругалась на некоторые строки, но помогло всего лишь их удаление, по итогу получился вот такой код, правильный, неправильный, но работает (переменная олдатаответ содержащая любое число символов теперь спокойно заменяет ключевое слово)
[vba]

With ActiveDocument.Content.Find
.ClearFormatting
.Text = "*Otvetchikifull*"
With .Replacement
.ClearFormatting
.Text = AllDataOtvet
End With
.Execute Replace:=wdReplaceAll
End With

With ActiveDocument.Content.Find
.ClearFormatting
.Text = "*Otvetchikifull*"
With .Replacement
.ClearFormatting
.Text = AllDataOtvet
End With
.Execute Replace:=wdReplaceAll
End With

Спасибо Автор - Skorpika
Дата добавления - 16.01.2015 в 21:15

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Симптомы

После ввода длинного номера (например, номера кредитной карты) в ячейке Excel номер отображается неправильно в Excel. Например,

Пример длинного числа, которое неправильно отображается в Excel.

Числовой формат по умолчанию в Excel является общим, поэтому вы можете отображать до 11 цифр в ячейке.

Обходной путь

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

Способ 1. Форматирование ячейки как текста

Для этого выполните следующие действия:

Щелкните правой кнопкой мыши поле со списком и выберите пункт Формат ячеек.

Отформатируйте ячейку как текст, выбрав параметр «Формат ячеек».

На вкладке Число выберите Текст, а затем нажмите ОК.

Выберите «Текстовый» на вкладке «Числовые форматы» в диалоговом окне «Формат ячеек».

Затем введите длинное число. (Не забудьте установить формат ячейки, прежде чем ввести число)

Введите длинное число.

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

Выберите «Пропустить ошибку», если вы не хотите видеть предупреждающие стрелки.

Результат, возвращаемый методом 1.

Способ 2. Использование одинарной кавычки

При вводе длинного числа сначала введите одинарную кавычку (') в ячейке, а затем длинное число.

Например, введите '1234567890123456789, и одинарная кавычка не будет отображаться после нажатия ENTER.

Перед вводом длинного числа добавьте одинарную кавычку.

Связанные статьи

Ваше мнение важно для нас! Не стесняйтесь сообщать, что вы думаете об этой статье, используя поле комментария, расположенное внизу документа. Это позволит нам улучшить содержимое. Заранее спасибо!

Читайте также: