Создать отчет в Word из Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

ДА будет и вам счастье...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Ну вот и ладушки... :)
Хочется только заметить:
в примерах выделенный диапазон Range("A1:B4") задавался жестко только для демонстрации работоспособности. В Вашем же случае нужно позаботиться о том, чтобы перед созданием документа был выделен нужный Вам диапазон данных.
В противном случае в документ может "уйти" не то что нужно.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

А формат и рамки не коаируются ?. Например объединённые ячейки...
Или это не возможно
С уважением...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

seergy, почему же невозможно.

Код: Выделить всё

Selection.PasteExcelTable False, True, False
получите таблицу, которая не будет связана с Excel.
*****
p.s. см. вложение
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
evgenius_b
Сообщения: 2
Зарегистрирован: 21 мар 2008, 11:46

Teslenko_EA писал(а):Здравствуйте zedby.
Ваш код вполне работоспособный, но для его выполнения, библиотека Microsoft.Word, должна быть подключена в проекте Excel.
Евгений.
Подсоединил в Referense Excell -я Microsoft Word 11.0 Object Library и вообще все, что хоть отдаленно в названии имеет Office, но некоторые команды не выполняются.

Например печать текста и вставка таблиц из Excel выполняется:

Dim appWD As Word.Application
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
appWD.Documents.Add

appWD.Selection.TypeText "Табл.1: Информация о позиции"
Workbooks(ReportTemplate).Worksheets(1).Activate
Worksheets(1).Range("B8:I14").Copy
appWD.Activate

appWD.Selection.Paste
appWD.Selection.Tables(1).AutoFitBehavior (wdAutoFitWindow)
appWD.Selection.TypeParagraph

А вот создать пустую таблицу не получается, например:

appWD.ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
1, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed

В чем прикол?
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

VictorM, Вы мне (и не только мне) очень помогли, а что за ошибка см. файл
А возможно сохранять в ворд где стоит курсор например на стр. 29
Вложения
ошибка.zip
(72.82 КБ) 51 скачивание
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

1. По поводу ошибки - ничего не могу пока сказать. У меня все работает четко. (проверил специально выложенный файл).
2. стр.29 это строка или страница?
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Т.е то место, где стоит или поставлен курсор мыши в ворде например на стр. 5 сегодня, на стр 29 завтра, через месяц на первой. т.е куда необходимо пользователю в документе ворд...
С уважением ...
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Как быть если лист скрыт например в редакторе VBA или в ручную... выдаёт ошибку
в месте:
Sheets("Лист1").Select
С уважением...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Если лист скрыт, конечно будет выдавать ошибку.
Чтобы этого избежать в начале процедуры пропишите

Код: Выделить всё

Worksheets("Лист1").Visible = True
'Ваша процедура
Worksheets("Лист1").Visible = False
Следут заметить, что аналогичная проблема будет, если лист защищен паролем.
В этом случае можно поступить аналогичным способом или защищать лист через VBA.
см. http://forum.developing.ru/showthread.php?t=13158
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Ответить