Страницы: 1
RSS
Можно ли заменить часть данных в ячейке по идентификатору?, VBA
 
Добрый день всем пользователям. Часто заглядываю на этот сайт в поиске каких-то интересных решений. Но сейчас появилась задача, которую я даже сформулировать в названии темы не могу. Поиск по форуму даёт не совсем то, что нужно...

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

Пример из шаблона будет выглядеть примерно так:
...на підставі накладної від {date_nakl} № {id_nakl} податкового векселя від  {date_veks} {number_veks} на суму акцизного податку {sum} гривень, який взято на облік {date_create} за № {rec_id}...

И это только малая часть текста.
Существует ли возможность реализовать вот такое заполнение? Результаты таких строк будут в одной обьединённой ячейке на ширину листа с возможностью переноса строк. И это будет соответствовать поставленной задаче.

Или всё-таки придётся идти по длинному пути?
 
deoniszp, почитайте про слияние данных из файла экселя с файлом ворд. Думаю, это Ваш случай.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
deoniszp написал:
Результаты таких строк будут в одной обьединённой ячейке на ширину листа с возможностью переноса строк.
М.б. Вы этого не знаете:
1. Ексель не делает перенос слов по слогам. Только слово целиком.
2. Высота строки ексель имеет ограничение (409,5 уе, т.е. примерно пол листа А4).
3. Кол-во символов в ячейке - тоже ограничено (не помню, сколько, но больше, чем 30000.)
4. Даже если Вас устроит перенос по словам, - начиная с определенного кол-ва символов ексель перестает переносить текст в ячейке (было в ранних версиях. в 2013 - уже нет).
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
JayBhagavan, идея хорошая, в бущущем 100% я её использую, но к сожалению именно к этой задаче она не подойдёт. Бухи хотят, чтобы результат сохранялся в этой же книге excel.

Михаил Лебедев, спасибо за инфу, я всего с полгода время от времени сталкиваюсь с vba, потому много чего не знаю. Например про ограничение в пол листа А4, учту )

Всем спасибо!
А пока я нашёл решение, пусть может быть оно и кривое, но задачу свою выполняет:
После создании нового листа на основе шаблона произвожу в нём замены макросом.
Код
    shtNew.Cells.Replace What:="{rec_id}", Replacement:=shtMain.Cells(rowCurrent, 1), LookAt _
        :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    shtNew.Cells.Replace What:="{date_ttn}", Replacement:=shtMain.Cells(rowCurrent, 4), LookAt _
        :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

и так далее....

Наверное такой подход какой-то лютый deprecated...
Изменено: deoniszp - 11.12.2018 18:44:42
 
deoniszp, создайте таблицу соответствия искомого и замены. Эту таблицу в массив и в цикле по строкам в массиве делайте найти и заменить содержимое копии листа с шаблоном.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
Страницы: 1
Наверх