Добрый день! Нужна помощь. С VBA заморачиваюсь не больше недели, поэтому не судите строго. На форумах решения конкретной задачи не нашел. Есть лист в Excel на который в три отдельные таблицы выведены результаты вычислений из всей книги. На этом же листе есть две кнопки "Скрыть/показать пустые строки/столбцы" и "Создать PDF". Выводить информацию в PDF-файл для демонстрации промежуточных результатов приходится очень часто. Существует две проблемы: 1. Появилась необходимость выводить информацию в Word вместо PDF. И тут есть несколько условий: - это нужно сделать без использования шаблона Word? т.е. документ должен создаваться в этой же папке с названием по аналогии с PDF; - конечный документ должен включать в себя через отступ 4 блока (текстовая часть [A1;J4] можно тоже табличкой и три таблицы без пустых строк и столбцов [A5;J14], [A16;D25], [A27;S350]) как во вложенном PDF-файле; - при этом 3 последние таблицы имеют плавающие размеры, т.е. при определенных условиях в них могут отсутствовать значения (="") и границы (условным форматированием); - информация должна оказаться в одном горизонтально ориентированном документе Word. Ключевым для меня является вывод нескольких диапазонов таблицы последовательно в один документ с отступами. С плавающими границами попробую сам разобраться, но и от помощи не откажусь). 2. Процесс скрытия пустых строк/столбцов занимает очень много времени. В оригинальном файле это происходит около 20-30 секунд. Это не критично, и смогу обойтись без этого, но если есть какие-нибудь алгоритмы по ускорению, то буду бесконечно благодарен). Заранее спасибо!
Добрый день! Нужна помощь. С VBA заморачиваюсь не больше недели, поэтому не судите строго. На форумах решения конкретной задачи не нашел. Есть лист в Excel на который в три отдельные таблицы выведены результаты вычислений из всей книги. На этом же листе есть две кнопки "Скрыть/показать пустые строки/столбцы" и "Создать PDF". Выводить информацию в PDF-файл для демонстрации промежуточных результатов приходится очень часто. Существует две проблемы: 1. Появилась необходимость выводить информацию в Word вместо PDF. И тут есть несколько условий: - это нужно сделать без использования шаблона Word? т.е. документ должен создаваться в этой же папке с названием по аналогии с PDF; - конечный документ должен включать в себя через отступ 4 блока (текстовая часть [A1;J4] можно тоже табличкой и три таблицы без пустых строк и столбцов [A5;J14], [A16;D25], [A27;S350]) как во вложенном PDF-файле; - при этом 3 последние таблицы имеют плавающие размеры, т.е. при определенных условиях в них могут отсутствовать значения (="") и границы (условным форматированием); - информация должна оказаться в одном горизонтально ориентированном документе Word. Ключевым для меня является вывод нескольких диапазонов таблицы последовательно в один документ с отступами. С плавающими границами попробую сам разобраться, но и от помощи не откажусь). 2. Процесс скрытия пустых строк/столбцов занимает очень много времени. В оригинальном файле это происходит около 20-30 секунд. Это не критично, и смогу обойтись без этого, но если есть какие-нибудь алгоритмы по ускорению, то буду бесконечно благодарен). Заранее спасибо!
Подскажите хотя бы как вывести три фрагмента таблицы с одного листа Excel в один лист Word друг за другом через абзац и как расположить этот лист горизонтально
Подскажите хотя бы как вывести три фрагмента таблицы с одного листа Excel в один лист Word друг за другом через абзац и как расположить этот лист горизонтальноIlya62
Подскажите хотя бы как вывести три фрагмента таблицы
Не стоит в теме задавать комплексный набор вопросов. [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 с пустым параграфом перед каждой. Успехов.
Подскажите хотя бы как вывести три фрагмента таблицы
Не стоит в теме задавать комплексный набор вопросов. [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
Подскажите, как указать свои диапазоны неумных таблиц [A5;J14], [A16;D25], [A27;S350]. Умные таблицы не получается использовать, т.к. в заголовке есть объединенные ячейки и названия ячеек заданы формулой.
Подскажите, как указать свои диапазоны неумных таблиц [A5;J14], [A16;D25], [A27;S350]. Умные таблицы не получается использовать, т.к. в заголовке есть объединенные ячейки и названия ячеек заданы формулой.Ilya62
В Вашем файле всё работает, а при копировании макроса в мой файл выдает ошибку:"Compile error: Can't find project or library". При копировании листа из Вашего примера в мою книгу выдает ошибку: "Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк и столбцов, чем исходная книга. Чтобы переместить или скопировать данные в конечную книгу, следует выделить их, а затем с помощью команд копирования и вставки вставить их на листы другой книги." Может причина в разных форматах файла/версиях Excel? У меня "Excel 2013", формат файла рабочей книги "Книга Excel 97-2003 (*.xls)".
В Вашем файле всё работает, а при копировании макроса в мой файл выдает ошибку:"Compile error: Can't find project or library". При копировании листа из Вашего примера в мою книгу выдает ошибку: "Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк и столбцов, чем исходная книга. Чтобы переместить или скопировать данные в конечную книгу, следует выделить их, а затем с помощью команд копирования и вставки вставить их на листы другой книги." Может причина в разных форматах файла/версиях Excel? У меня "Excel 2013", формат файла рабочей книги "Книга Excel 97-2003 (*.xls)".Ilya62