2010-01-20 4 views
2

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

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

+0

Я не думаю, что есть способ сделать это с помощью «обычных» методов. Способ сделать это будет только с VBA (как вы уже описали в теге), и в этом случае ваш вопрос, вероятно, будет иметь лучшие ответы на StackOverflow, так как это скорее связано с программированием. Я голосую, чтобы перенести свой вопрос там (но это только мое мнение, любой может не согласиться). – Gnoupi

+0

Есть ли у вас опыт работы с макросами/VBA? – Lunatik

ответ

2

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

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

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

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

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

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

+0

Хммм, я не знал о мероприятии «Worksheet_change», которое хорошо знать. – Gnoupi

3

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


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

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

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

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

0

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

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