Как Ограничить Количество Символов в Ячейке Excel • Целое число

Исправляем ошибку VBA № 5854 слишком длинный строковый параметр в шаблоне word из таблицы excel 255 символов

Всем привет, сегодня снова работаем с эксель таблицей и шаблоном в ворд, в этом видео я вам покажу как работать с большим текстом, если у нас допустим, в нашей ячейке будет содержаться текста значительно больше чем 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 продолжать добавлять разбивку основного текста на части, но будьте внимательны, указывая смещение и длину символов. Соответствующе правки так же вносите в шаблон.

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

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

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

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

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

эксперт
Мнение эксперта
Михаил Соловьев, консультант по вопросам работы с продуктами Microsoft
Если у вас возникнут сложности, я помогу разобраться!
Задать вопрос эксперту
при помощи функции ДЛСТР получаем количество символов в строке с исходным текстом D 1 170-ДЛСТР ПОДСТАВИТЬ D 1 ; D3 ; ДЛСТР D3 ;. Если же вы хотите что-то уточнить, обращайтесь ко мне!
Функции, которая отрезает лишнее количество символов в ячейке, найти не удается, но существует система из двух функций, которые можно применить. Это система из функции ЛЕВСИМВ (или ПРАВСИМВ) и функции ДЛСТР (длина строки).
Сообщение для ввода

Excel сколько раз встречается значение в столбце — Вэб-шпаргалка для интернет предпринимателей!

Перейдем в окне «Проверка вводимых значений» на вкладку «Сообщения для ввода». Поставим галочку в поле «Отображать подсказку, если ячейка является текущей». Введем в соответствующие поля заголовок и текст сообщения (рис. 5). В последующем, когда пользователь встанет на одну из ячеек области ввода (в примере на рис. 5 – в ячейку А6), отобразится созданное нами сообщение.

эксперт
Мнение эксперта
Михаил Соловьев, консультант по вопросам работы с продуктами Microsoft
Если у вас возникнут сложности, я помогу разобраться!
Задать вопрос эксперту
Функция выше означает, что если ячейка D2 D7 содержит значения меньше 9 000 или больше 19 000 , то функция СУММ должна отобразить сумму всех записей, в которых выполняется условие. Если же вы хотите что-то уточнить, обращайтесь ко мне!
Функция СЧЕТ подойдет, если вы работаете исключительно с числами. Ячейки, заполненные текстовыми значениями, этой функцией учитываться не будут. В остальном СЧЕТ почти идентичен СЧЕТЗ из ранее рассмотренного метода.

Как удалить правые 11 символов в экселе? Имеется ячейка вида «Андрей89085555555» . Нужно чтобы осталось только имя.

  1. Кликните на любую клетку, для которой вы хотите задать какие-нибудь правила.
  2. Откройте в меню раздел «Данные».
  3. Выберите инструмент «Работа с данными».
  4. Нажмите на иконку «Проверка данных».

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector