Страницы: 1
RSS
Макрос для экспорта листов из Excel в word с полным сохранением форматирования ячеек, В теме вся суть
 
Добрый вечер. Тему вы прочитали, теперь подробней.
Есть файл Excel (прикреплён), в котором 27 листов. Каждый лист представляет из себя таблицу с определёнными данными, которые отформатированы согласно норм предприятия. Необходим макрос, для экспорта всех этих таблиц в файл Word с сохранением исходных данных, исходного форматирования ячеек (высота и ширина ячеек, заливка, полужирность и высота текста). Все таблицы должны идти в том же порядке, в котором они идут в книге Excel.

Теперь детали:
1. Имена листов постоянны и неизменны.
2. Форматирование ячеек может меняться в каждой таблице в зависимости от ситуации и не является константой
3. Скрытые столбцы/строки не должны экспортироваться в файл Word
4. Скрываться могут разные столбцы/строки
5. Листы должны экспортироваться в один документ word
6. Листы могут быть как в книжной так и альбомной ориентации
7. Каждый лист может быть длиной до 500 строк
7. Все страницы документа word должны автоматически пронумероваться по порядку начиная с 2
8. Экспорт производится в вновь создаваемый макросом документ Word, в папку с основном файлом Excel

Если что-то упустил, то проясню при необходимости.
Изменено: Scorpio - 18.10.2017 10:57:01 (Добавил файл в тему)
 
Какие сроки и бюджет?
 
Срок до 28 октября (не критично если позже, но как ориентир).
Бюджет хотел услышать от специалистов, какой следует закладывать.
 
Цитата
Scorpio написал:
Бюджет хотел услышать от специалистов, какой следует закладывать.
А какой готовы заложить? Ну вот почему все "стесняются" назвать свою сумму?
 
Если мне скажут что разработать подобный макрос стоит от 10000, то повременю с заказом макроса до работы, которая оправдает подобное вложение. Если скажут что до 2000 вполне реально уложиться, то и раздумывать не буду
 
Интересует пример вставки "длиннострочного" фрагмента: как должно это выглядеть.
Еще вопрос: как определять диапазон листа, необходимый к вставке. На что ориентироваться: область печати, использованный диапазон (он же UsedRange) вроде не подходят. Каким образом программа должна будет сама определить копируемую область?

Взялся бы за 4.

Но это если никому дорогу не перешел из тех, кто меня опередил.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
Диапазон листа берётся очень просто: по последней не пустой ячейке, значение которой отлично от ""
На листах режим просмотра книги выбран как "Разметка страницы", поэтому интересует диапазон (по ширине) в границах этой самой страницы.
О каком "длиннострочном" фрагменте речь?
 
Вы писали про 500 строк... В WORD  он явно расползется более чем на 1 страницу. Вот такой. Полезно посмотреть: как Вы себе представляете результат вставки.
Посмотрел файл-пример. Там еще встречаются листы, разбитые EXCELем при печати на несколько страниц, но не вертикально, а горизонтально (например, 4.2). Как должны вставляться эти? Копирование-вставка всего диапазона данных приводит к уходу вставленного в WORD фрагмента за правую границу видимости.

Попробовал привязаться при выяснении диапазона копирования к наличию данных - опять прокол. Есть листы, где форматы таблицы присутствуют, а данными не наполнены. Нутром чую: хотите копировать и их...

Т.о., не нахожу критерия. Неужто придется прерывания программе делать для выделения пользователем копирования на новую страницу WORD?

Впрочем, Увидел последний Ваш пост - похоже, этими пустышками можно пренебречь?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
Давайте проясним на конкретике.
Когда я говорил об одной странице, я специально уточнил: по ширине. Т.е. таблица в excel всегда будет отформатирована таким образом, что не будет выходить за края ширины одной страницы. По длине: диапазон ограничивается последней строкой, в которой есть непустые ячейки заполненные чем-то отличным от "", поэтому по длине страниц может быть много для каждой таблицы.

Теперь по поводу таблицы 4.2
В ней отображены все возможные варианты столбцов, а вот нужны на выходе не все, поэтому ненужные будут скрываться в Excel и таблицы снова будет чётко влезать в края страницы по ширине.

Прикрепил пример (в нём не все таблицы, но пример реализации вставки данных, которые участвуют в отборе
 
Реализуемо.
Со стоимостью согласны?

Отлично... Пример информативный. Из него видно, что пока ориентация не меняется, все вставляется на текущую страницу. Если ориентация меняется, нужно начать новую. Я сначала предполагал, что новую по-любому начинать надо.

Далее, рассмотрим 2.1. В правом варианте есть пустые ячейки, но с форматами. Ваше объяснение определение диапазона заставит программу их не копировать. То есть столбцы Z-AC копироваться не будут. Так?
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
Цитата
PerfectVam написал:
То есть столбцы Z-AC копироваться не будут. Так?
Именно так. Но если брать конкретно таблицу 2.1 то в копировании участвует диапазон столбцов от M до T
 
Посмотрите пожалуйста таблицу 4.2 из последнего примера. Там один из столбцов диапазона скрыт, в результате чего и вместилась таблица по ширине листа. Так вот скрываться могу в некоторых таблицах разные столбцы, и соответственно не должны участвовать в копировании. С этим проблем не возникнет?
 
Если возникнет, будем обходить.
Пока мешает нескрытие запасных вариантов. В остальном вроде все решаемо.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
 
Не смог удовлетворить всем потребностям ТС. Не удалось добиться портретного сходства оригинала с копией в WORDе. Ручная вставка (Ctrl-V) сохраняет форматы, а вот при работе макроса элемент EXCEL-таблицы из буфера вставляется почему-то по-другому.

По договоренности с ТС работа прекращена.
Следствие из третьего закона Чизхолма:
"Даже если ясность изложения исключает неверное толкование, все равно найдется кто-то, кто поймет Вас неправильно."
Страницы: 1
Наверх