Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Последовательный вывод таблиц Excel в один документ Word - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Последовательный вывод таблиц Excel в один документ Word
Ilya62 Дата: Вторник, 05.03.2019, 16:46 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Нужна помощь. С VBA заморачиваюсь не больше недели, поэтому не судите строго. На форумах решения конкретной задачи не нашел.
Есть лист в Excel на который в три отдельные таблицы выведены результаты вычислений из всей книги. На этом же листе есть две кнопки "Скрыть/показать пустые строки/столбцы" и "Создать PDF". Выводить информацию в PDF-файл для демонстрации промежуточных результатов приходится очень часто.
Существует две проблемы:
1. Появилась необходимость выводить информацию в Word вместо PDF. И тут есть несколько условий:
- это нужно сделать без использования шаблона Word? т.е. документ должен создаваться в этой же папке с названием по аналогии с PDF;
- конечный документ должен включать в себя через отступ 4 блока (текстовая часть [A1;J4] можно тоже табличкой и три таблицы без пустых строк и столбцов [A5;J14], [A16;D25], [A27;S350]) как во вложенном PDF-файле;
- при этом 3 последние таблицы имеют плавающие размеры, т.е. при определенных условиях в них могут отсутствовать значения (="") и границы (условным форматированием);
- информация должна оказаться в одном горизонтально ориентированном документе Word.
Ключевым для меня является вывод нескольких диапазонов таблицы последовательно в один документ с отступами. С плавающими границами попробую сам разобраться, но и от помощи не откажусь).
2. Процесс скрытия пустых строк/столбцов занимает очень много времени. В оригинальном файле это происходит около 20-30 секунд. Это не критично, и смогу обойтись без этого, но если есть какие-нибудь алгоритмы по ускорению, то буду бесконечно благодарен).
Заранее спасибо!

Эта же тема на других форумах:
https://u.to/Pf3UFA
https://forum.msexcel.ru/index.php?topic=11985.new#new
К сообщению приложен файл: 9065959.xlsm (92.8 Kb) · __-__-20190305-.pdf (33.9 Kb)


Сообщение отредактировал Ilya62 - Вторник, 05.03.2019, 17:02
 
Ответить
СообщениеДобрый день!
Нужна помощь. С VBA заморачиваюсь не больше недели, поэтому не судите строго. На форумах решения конкретной задачи не нашел.
Есть лист в Excel на который в три отдельные таблицы выведены результаты вычислений из всей книги. На этом же листе есть две кнопки "Скрыть/показать пустые строки/столбцы" и "Создать PDF". Выводить информацию в PDF-файл для демонстрации промежуточных результатов приходится очень часто.
Существует две проблемы:
1. Появилась необходимость выводить информацию в Word вместо PDF. И тут есть несколько условий:
- это нужно сделать без использования шаблона Word? т.е. документ должен создаваться в этой же папке с названием по аналогии с PDF;
- конечный документ должен включать в себя через отступ 4 блока (текстовая часть [A1;J4] можно тоже табличкой и три таблицы без пустых строк и столбцов [A5;J14], [A16;D25], [A27;S350]) как во вложенном PDF-файле;
- при этом 3 последние таблицы имеют плавающие размеры, т.е. при определенных условиях в них могут отсутствовать значения (="") и границы (условным форматированием);
- информация должна оказаться в одном горизонтально ориентированном документе Word.
Ключевым для меня является вывод нескольких диапазонов таблицы последовательно в один документ с отступами. С плавающими границами попробую сам разобраться, но и от помощи не откажусь).
2. Процесс скрытия пустых строк/столбцов занимает очень много времени. В оригинальном файле это происходит около 20-30 секунд. Это не критично, и смогу обойтись без этого, но если есть какие-нибудь алгоритмы по ускорению, то буду бесконечно благодарен).
Заранее спасибо!

Эта же тема на других форумах:
https://u.to/Pf3UFA
https://forum.msexcel.ru/index.php?topic=11985.new#new

Автор - Ilya62
Дата добавления - 05.03.2019 в 16:46
Ilya62 Дата: Четверг, 07.03.2019, 13:23 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Подскажите хотя бы как вывести три фрагмента таблицы с одного листа Excel в один лист Word друг за другом через абзац и как расположить этот лист горизонтально
 
Ответить
СообщениеПодскажите хотя бы как вывести три фрагмента таблицы с одного листа Excel в один лист Word друг за другом через абзац и как расположить этот лист горизонтально

Автор - Ilya62
Дата добавления - 07.03.2019 в 13:23
anvg Дата: Пятница, 08.03.2019, 16:23 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток
Подскажите хотя бы как вывести три фрагмента таблицы

Не стоит в теме задавать комплексный набор вопросов.
[vba]
Код
Public Sub PublishTablesToWord()
    Const wdNewBlankDocument = 0
    Const wdOrientLandscape = 1
    Dim wordApp As Object
    Dim newDoc As Object
    Dim pParagraph As Object
    Dim pSheet As Worksheet, pLo As ListObject
    
    Set wordApp = CreateObject("Word.Application")
    Set newDoc = wordApp.Documents.Add(DocumentType:=wdNewBlankDocument)
    newDoc.PageSetup.Orientation = wdOrientLandscape
    wordApp.Visible = True
    
    Set pSheet = ThisWorkbook.Worksheets(1)
    For Each pLo In pSheet.ListObjects
        pLo.Range.Copy
        newDoc.Paragraphs.Add
        newDoc.Paragraphs.Add.Range.PasteExcelTable False, False, True
    Next
End Sub
[/vba]
В примере, создаётся новый документ, меняется ориентация листа. Копируются все умные таблицы с рабочего листа книги Excel с пустым параграфом перед каждой.
Успехов.
К сообщению приложен файл: demo.xlsb (15.0 Kb)


Сообщение отредактировал anvg - Пятница, 08.03.2019, 16:25
 
Ответить
СообщениеДоброе время суток
Подскажите хотя бы как вывести три фрагмента таблицы

Не стоит в теме задавать комплексный набор вопросов.
[vba]
Код
Public Sub PublishTablesToWord()
    Const wdNewBlankDocument = 0
    Const wdOrientLandscape = 1
    Dim wordApp As Object
    Dim newDoc As Object
    Dim pParagraph As Object
    Dim pSheet As Worksheet, pLo As ListObject
    
    Set wordApp = CreateObject("Word.Application")
    Set newDoc = wordApp.Documents.Add(DocumentType:=wdNewBlankDocument)
    newDoc.PageSetup.Orientation = wdOrientLandscape
    wordApp.Visible = True
    
    Set pSheet = ThisWorkbook.Worksheets(1)
    For Each pLo In pSheet.ListObjects
        pLo.Range.Copy
        newDoc.Paragraphs.Add
        newDoc.Paragraphs.Add.Range.PasteExcelTable False, False, True
    Next
End Sub
[/vba]
В примере, создаётся новый документ, меняется ориентация листа. Копируются все умные таблицы с рабочего листа книги Excel с пустым параграфом перед каждой.
Успехов.

Автор - anvg
Дата добавления - 08.03.2019 в 16:23
Ilya62 Дата: Понедельник, 11.03.2019, 09:46 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
anvg, спасибо! Попробую разобраться.
Не стоит в теме задавать комплексный набор вопросов.

Это я уже понял))
 
Ответить
Сообщениеanvg, спасибо! Попробую разобраться.
Не стоит в теме задавать комплексный набор вопросов.

Это я уже понял))

Автор - Ilya62
Дата добавления - 11.03.2019 в 09:46
Ilya62 Дата: Понедельник, 11.03.2019, 10:19 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Копируются все умные таблицы

Подскажите, как указать свои диапазоны неумных таблиц [A5;J14], [A16;D25], [A27;S350]. Умные таблицы не получается использовать, т.к. в заголовке есть объединенные ячейки и названия ячеек заданы формулой.
 
Ответить
Сообщение
Копируются все умные таблицы

Подскажите, как указать свои диапазоны неумных таблиц [A5;J14], [A16;D25], [A27;S350]. Умные таблицы не получается использовать, т.к. в заголовке есть объединенные ячейки и названия ячеек заданы формулой.

Автор - Ilya62
Дата добавления - 11.03.2019 в 10:19
anvg Дата: Понедельник, 11.03.2019, 11:17 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
как указать свои диапазоны... [A5:J14], [A16:D25], [A27:S350]
Так и задавайте
вместо pLo.Range.Copy будет
[vba]
Код
[A5:J14].Copy
[/vba]
 
Ответить
Сообщение
как указать свои диапазоны... [A5:J14], [A16:D25], [A27:S350]
Так и задавайте
вместо pLo.Range.Copy будет
[vba]
Код
[A5:J14].Copy
[/vba]

Автор - anvg
Дата добавления - 11.03.2019 в 11:17
Ilya62 Дата: Понедельник, 11.03.2019, 11:35 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
вместо pLo.Range.Copy будет
[A5:J14].Copy

Если правильно понял, то сюда нужно вставить подряд все три, интересующие меня, диапазона ([A5:J14], [A16:D25], [A27:S350])?

...скорее всего, я что-то делаю не так (VBA для меня всё ещё дремучий лес) и у меня ничего не вышло

...и можно ли первый лист документа заменить на текущий?
 
Ответить
Сообщение
вместо pLo.Range.Copy будет
[A5:J14].Copy

Если правильно понял, то сюда нужно вставить подряд все три, интересующие меня, диапазона ([A5:J14], [A16:D25], [A27:S350])?

...скорее всего, я что-то делаю не так (VBA для меня всё ещё дремучий лес) и у меня ничего не вышло

...и можно ли первый лист документа заменить на текущий?

Автор - Ilya62
Дата добавления - 11.03.2019 в 11:35
Ilya62 Дата: Понедельник, 11.03.2019, 13:16 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
вместо pLo.Range.Copy будет
[A5:J14].Copy

В Вашем файле всё работает, а при копировании макроса в мой файл выдает ошибку:"Compile error: Can't find project or library".
При копировании листа из Вашего примера в мою книгу выдает ошибку: "Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк и столбцов, чем исходная книга. Чтобы переместить или скопировать данные в конечную книгу, следует выделить их, а затем с помощью команд копирования и вставки вставить их на листы другой книги."
Может причина в разных форматах файла/версиях Excel?
У меня "Excel 2013", формат файла рабочей книги "Книга Excel 97-2003 (*.xls)".
 
Ответить
Сообщение
вместо pLo.Range.Copy будет
[A5:J14].Copy

В Вашем файле всё работает, а при копировании макроса в мой файл выдает ошибку:"Compile error: Can't find project or library".
При копировании листа из Вашего примера в мою книгу выдает ошибку: "Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк и столбцов, чем исходная книга. Чтобы переместить или скопировать данные в конечную книгу, следует выделить их, а затем с помощью команд копирования и вставки вставить их на листы другой книги."
Может причина в разных форматах файла/версиях Excel?
У меня "Excel 2013", формат файла рабочей книги "Книга Excel 97-2003 (*.xls)".

Автор - Ilya62
Дата добавления - 11.03.2019 в 13:16
Ilya62 Дата: Вторник, 12.03.2019, 09:03 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Разобрался, отсутствовала библиотека. Всё решилось снятием галочки с MISSING в Refences))
anvg, ещё раз огромное спасибо!
 
Ответить
СообщениеРазобрался, отсутствовала библиотека. Всё решилось снятием галочки с MISSING в Refences))
anvg, ещё раз огромное спасибо!

Автор - Ilya62
Дата добавления - 12.03.2019 в 09:03
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!