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

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

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

Ответить
Wine
Сообщения: 1
Зарегистрирован: 18 фев 2008, 16:58

FileName = Application.GetOpenFilename(filefilter:="Документы MSWord (*.doc), *.doc", Title:="Выберите файл шаблона", MultiSelect:=False)
If FileName = RTrim(LTrim("False")) Then
MsgBox "Необходимо выбрать файл!"
Exit Sub
End If
WApp.Visible = True
Set ActDoc = WApp.dOCUMENTS(1).Open(FileName)

До этого места работает - а дальше начинаю манипулировать документом и все
For i = 1 To ActDoc.Table(1).Rows.Count - 3
ActDoc.Tables(1).Rows(3).Delete
Next

Документ открыла а дальше не видны методы и объекты Worda. На любые попытки обратиться к объектам документа Word Excel выдает ошибку
bi-lya
Сообщения: 97
Зарегистрирован: 07 июн 2007, 14:08

Для того, чтобы были видны свойства и методы, нужно использовать раннее связывание с подключением библиотеки в референсах и декларированием переменных, а так же присваивать объектные ссылки этим переменным. Кроме того, у вас ошибки в коде

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

  Dim WApp As Word.Application
  Dim ActDoc As Word.Document
  
  Filename = Application.GetOpenFilename(filefilter:="Документы MSWord (*.doc), *.doc", Title:="Выберите файл шаблона", MultiSelect:=False)
  If Filename = RTrim(LTrim("False")) Then
    MsgBox "Необходимо выбрать файл!"
    Exit Sub
  End If

  Set WApp = CreateObject("Word.Application")

  WApp.Visible = True
  
  Set ActDoc = WApp.dOCUMENTS.Open(Filename)
  
  For i = 1 To ActDoc.Tables(1).Rows.Count - 3
    ActDoc.Tables(1).Rows(3).Delete
  Next
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

bi-lya писал(а):Для того, чтобы были видны свойства и методы, нужно использовать раннее связывание с подключением библиотеки в референсах и декларированием переменных, а так же присваивать объектные ссылки этим переменным. Кроме того, у вас ошибки в коде

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

  Dim WApp As Word.Application
  Dim ActDoc As Word.Document
  
  Filename = Application.GetOpenFilename(filefilter:="Документы MSWord (*.doc), *.doc", Title:="Выберите файл шаблона", MultiSelect:=False)
  If Filename = RTrim(LTrim("False")) Then
    MsgBox "Необходимо выбрать файл!"
    Exit Sub
  End If

  Set WApp = CreateObject("Word.Application")

  WApp.Visible = True
  
  Set ActDoc = WApp.dOCUMENTS.Open(Filename)
  
  For i = 1 To ActDoc.Tables(1).Rows.Count - 3
    ActDoc.Tables(1).Rows(3).Delete
  Next
Не датите полный код для создаения отчёта в ВОРд из Эксель в формате RTF
C уважением..
bi-lya
Сообщения: 97
Зарегистрирован: 07 июн 2007, 14:08

Что вы имеете ввиду под
seergy писал(а):полный код для создаения отчёта в ВОРд из Эксель
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

bi-lya писал(а):Что вы имеете ввиду под
Есть иакрос котрый вставляет в ворд выдел диапозон, ячеек в эксель. Однако он вставляется как книга (типа спец вставки). Можно открыть и пересчитать мои расчёты
- это сложный расчёт . А если вставит в ворд в формате RTF, то никто ничего не изменит - останутся только принимаемые мной проектные решения...
С уважением...
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте seergy.
А еще можно создать файл в формате PDF, и тогда уж точно, сложно будет что то изменить. И надо то всего, установить виртуальный принтер (например dopdf.exe), и при отправке задания печати на него, будет создан документ PDF, изменить который сложнее чем RTF.
Евгений.
seergy
Сообщения: 109
Зарегистрирован: 25 ноя 2007, 21:31

Знаю. Мне нужна таблица в ворде...
zedby
Сообщения: 2
Зарегистрирован: 11 мар 2008, 03:49

пытаюсь сделать отчет как описано в этой теме но столкнулся с такой проблемой:
из екселя запускается ворд и в нем необходимо произвести поиск и замену например текста {FIO} на "иванов иван иванович" но код както странно отрабатывает ищет текст для замены но не меняет егоб где ощибка подскажите



Sub zz()




Filename = Application.GetOpenFilename(filefilter:="Документы MSWord (*.doc), *.doc", Title:="Выберите файл шаблона", MultiSelect:=False)
If Filename = RTrim(LTrim("False")) Then
MsgBox "Необходимо выбрать файл!"
Exit Sub
End If

Set WApp = CreateObject("Word.Application")



Set ActDoc = WApp.dOCUMENTS.Open(Filename)
ActDoc.ActiveWindow.Selection.Find.Text = "{FIO}"
ActDoc.ActiveWindow.Selection.Find.Replacement.Text = "Ианов"
ActDoc.ActiveWindow.Selection.Find.Forward = True
ActDoc.ActiveWindow.Selection.Find.Wrap = wdFindAsk
ActDoc.ActiveWindow.Selection.Find.Execute Replace:=wdReplaceAll


WApp.Visible = True
End Sub
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте zedby.
Ваш код вполне работоспособный, но для его выполнения, библиотека Microsoft.Word, должна быть подключена в проекте Excel.
Евгений.
pilligrim
Сообщения: 43
Зарегистрирован: 20 июл 2007, 07:57
Откуда: UZ
Контактная информация:

Дамы и господа.
А нельзя просто копи пастом воспользоваться?
Типа

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

Windows("Microsoft Excel").Activate
Selection.Copy
Windows("Microsoft Word").Activate
Paste
Ответить