Excel: создать новый лист для каждой строки - PullRequest
2 голосов
/ 20 января 2010

В таблице Excel у меня есть примерно 30 строк х 100 столбцов данных. Каждая строка представляет своего «клиента». Для каждого клиента я создаю сводный лист, который им отправляется по электронной почте, и который также содержит всю информацию из моего основного листа

Мой вопрос заключается в следующем: существует ли способ для Excel создать новый лист на основе некоторого шаблона, когда я добавляю новую строку в основной лист и заполняю ее соответствующими данными?

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Я выскажу свое мнение о вашей необходимости, по крайней мере, так, как я ее вижу. Это не «готовое к использованию» решение, однако, только некоторые идеи о том, как это сделать.


Из того, что я знаю, нет способа отследить вставку строки в Excel. Таким образом, вам потребуется активировать функцию VBA, например, для кнопки. На самом деле, см. Ответ Лунатика.

Эта функция будет зацикливать все строки на главном листе и создавать новый лист при необходимости (желательно, чтобы у каждого клиента был уникальный идентификатор, это может быть простой индекс на основном листе, в зависимости от строки) ,

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

Вторая операция, которую нужно выполнить, - поместить данные из строки на главном листе в шаблон (если я правильно понял ваше требование), что не очень сложно сделать в VBA.

2 голосов
/ 21 января 2010

Если вам нужно, чтобы это происходило автоматически при добавлении строки, вам нужно использовать событие Worksheet_Change, чтобы зафиксировать завершение новой строки.

Это тогда сгенерирует новую книгу из шаблона, скопирует необходимые диапазоны и сохранит новый файл где-то, как говорит Gnoupi

Все это относительно тривиально с VBA, но, к сожалению, если вы не знакомы с VBA, то это не простой случай «делай X, тогда делай Y в Excel», так что я думаю, что ты можешь бороться, даже с опубликованным примером кода здесь.

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

Редактировать
Я создал очень простую демонстрацию того, как это может работать: http://drop.io/4clxof3 - обратите внимание, что этот пример не включает обработку событий для добавления новой строки, почти не имеет проверки или обработки ошибок и делает широкие предположения почти обо всем (!)

Если вы чувствуете себя комфортно, используя эту основу для разработки собственного решения, тогда отлично. Если вся вещь VBA для вас чужда, то, возможно, пришло время вызвать подкрепление:)

0 голосов
/ 29 апреля 2010

Мне было интересно, возможно ли это без перехвата ошибок.Просто просто иметь код VBA, который берет каждую строку документа Excel - Создает файл для каждой строки, а затем в конце объединяет все файлы в папке в одну?

Я знаю, звучит странно ... ноэто возможно?

...