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

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

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

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

Скорее так :
Dim objWord As Object
' Создание Doc
Sub CreateDoc()
Set objWord = CreateObject("Word.Application")
If objWord.Documents.Count = 0 Then objWord.Documents.Add DocumentType:=wdNewBlankDocument
objWord.Visible = True
Worksheets("для ворд").Visible = True
Worksheets("для ворд").Columns("A:A").SpecialCells(xlCellTypeConstants, 3).Copy
objWord.Selection.Paste
Application.CutCopyMode = False
Worksheets("для ворд").Visible = False
End Sub
- и было мне счастье...
P.S. Со всем не усматрел
А - Call wdDoc.Range.PasteAndFormat(wdFormatPlainText)
не возможно использовать или вставлять текст с опред. форматом...??
с уважением...
Вложения
Sample_1.zip
(15.1 КБ) 51 скачивание
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

seergy,
Скорее так :
ну, это уж Вам виднее :rolleyes:
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

А - Call wdDoc.Range.PasteAndFormat(wdFormatPlainText)
не возможно использовать или вставлять текст с опред. форматом...??
с уважением...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Использоваь можно, а про определенный формат мы уже говорили, зачем повторяться.
Форматирование Excel НЕ сохранится, форматировать текст прийдется в самом Word.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Да виноват благодарю...........
С уважением....
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Виктор не могу справиться с ошибкой:
Run-time error "1004" Данная команда не применима для несвязанных диапозонов
Хотя делал как в вашем примере, только вместо Worksheets("для ворд"), вставляю свои листы и диапозоны. Проверил Referens в VBA вроде всё как в вашем примере....
См. Принскрин
С уважением..
Вложения
Doc7.zip
(90.33 КБ) 40 скачиваний
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

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

Разобрался и сам оптимизировал (см. пример выше коды в файле Semple 1)
Вместо
Worksheets("Отчёт сварка ").Columns("A:A").SpecialCells(xlCellTypeConstants, 3).Copy
objWord.Selection.PasteAndFormat (wdFormatPlainText)
Выбрал
Worksheets("Отчёт сварка ").Columns("A:A").SpecialCells(xlCellTypeFormulas, 6).Copy
objWord.Selection.PasteAndFormat (wdFormatPlainText)
Код заработал...
Но PasteAndFormat (wdFormatPlainText) - не работает - вставляет как в ворд как таблицу, а не RTF - странно и ошибок нет...!!!?
С уважением...
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Это говорит лишь о том, что для решения Вашего вопроса Вы предоставляете одни данные, а в реальных условиях используете другие.
Справка Excel:
xlCellTypeConstants. Ячейки, содержащие константы
xlCellTypeFormulas. Ячейки, содержащие формулы
У меня прекрасно работает (как и работала) строка

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

Worksheets("Отчёт сварка ").Columns("A:A").SpecialCells(xlCellTypeConstants , 3).Copy
а для вставки данных как текст, все-таки попробуйте применить ранее предложенный вариант.
***
если можно, небольшой совет, не применяйте в именах листов пробелы. Лучше пишите так Отчёт_сварка. Это не прихоть, просто может отозваться самым неожиданным образом, в самом неожиданном месте.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Спасибо большое

Да. При слитном написании имён листов или через "_" в коде
SpecialCells(xlCellTypeVisible). видимые ячейки
xlCellTypeConstants. Ячейки, содержащие константы
xlCellTypeFormulas. Ячейки, содержащие формулы
Кода работают по разному.
Интересно .... почему так...наверное существуют жёсткие правила синтекса при написании програмного кода, кот. нужно учитывать...
С уважением
Ответить