Требуется (по событию, например, изменение ячейки или нажатию кнопки) экспортировать один лист в ворд с сохранением всего форматирования. Если есть возможность, то экспортировать все листы книги excel в разные word-документы.
Экспорт листа в формат Doc
Сообщений 1 страница 7 из 7
Поделиться22010-12-02 01:05:54
Есть вариант решения путем простого копирования:
Sub Button_Click() Dim wdApp As Object ' Приложение Word Dim wdDoc As Object ' Документ Word 'Создаем приложение Word Set wdApp = CreateObject("Word.application") 'Для каждого листа For Each ws In ActiveWorkbook.Worksheets 'Добавляем новый документ Set wdDoc = wdApp.Documents.Add 'Копируем из Excel ws.UsedRange.Copy 'Вставляем в Word wdDoc.Paragraphs(wdDoc.Paragraphs.Count).Range.InsertParagraphAfter wdDoc.Paragraphs(wdDoc.Paragraphs.Count).Range.Paste Application.CutCopyMode = False wdDoc.Paragraphs(wdDoc.Paragraphs.Count).Range.InsertParagraphAfter Next ws Set ws = Nothing Set wdDoc = Nothing wdApp.Visible = True Set wdApp = Nothing End Sub
Приемлем ли этот вариант надо проверять на "боевых" документах.
Поделиться32010-12-02 02:00:50
Максим,
здесь проблема в следующем: копирует макрос вместе с решеткой excel, т.е. конечный документ весь вставлен в таблицу и внешний вид в сумме невменяем.
Текст перемещен и форматирование сохранено. Остается следующее: возможно ли перед копированием извлекать
содержимое из ячеек. Вордовский документ должен быть единым, т.е. без табличного разбиения.
Поскольку при извлечении ячеек Вам потребуется учесть конкретное форматирование, то, чтобы не делать задачу для Вас бесконечной,
пусть это будет шрифт, размер, расстояние между строками и выравнивание (центр, по ширине, по левому краю, по правому краю).
Поделиться42010-12-02 12:08:47
Копирование происходит с таблицей, чтобы сохранить позиции всех текстовый частей. Выполнить экспорт без использования таблицы, чтобы документ был единым, но сохраняя позиции текста будет крайне сложно. Кстати, таблица при печати не видна - у нее границы не подкрашены. Если неубедительно, то из быстрых предлагаю следующие варианты решения: 1) либо использовать шаблон Word, где заранее уже будет размечено в какие места вставлять текст 2) либо просто попорядку заполнять документ Word данными из ячеек. Опять же все зависит от того какой входящий Ecxel и что мы должны получить на выходе.
Поделиться52010-12-02 23:12:07
Максим,
1. Вариант: обратиться через vba к графической библиотеке (есть такая?) абсолютного позиционирования символа и отлавливать позицию начала слова.
2. Экспортировать в ворд c таблицей. Там пробиться к объекту ворда "Линейка" и смотреть позицию символа относительно линейки.
Какой-то из этих вариантов возможен?
Поделиться62010-12-03 02:50:27
Первый вариант какой-то очень уж сложный, по крайней мере мое сознание не готово его воспринять. Второй теоретически возможен, но будет очень трудоемким и я не уверен, что он решит задачу.
Экспортироваться должны однотипные Excel файлы или их большое разнообразие? Может все-таки в коде делать нужную разбивку Word документа по параграфам и вставлять туда данные из Excel.
Поделиться72010-12-03 16:54:25
Максим, да, осознаю, что все это очень сложно, так что, раз и Ваша оценка такова, то будем считать, что Ваше первичное решение пока подходит. Попрошу думать над ней других.
Нет, документов много разных, но, в целом, Вы и здесь помогли: так как в задаче 3.4, Вы уже показали, как делать шаблон и как в его поля загружать данные.
Так что, предлагаю ВАМ отключиться от этой задачи, просто повешу ее "на будущее" для других. Вероятно, есть обходное решение или кто-то знает надстройку соответствующую.
И, кстати, еще может быть решение на vb, а не на vba, но тут я не могу судить.