Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 10:04   #1
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию Как из Excel отредактировать табличку Word

Здравствуйте! Подскажите, пожалуйста. Я делаю отчет из Excel в Word. Из видимых строк Excel данные выгружаются в таблицу Word. В Word'е надо увеличить таблицу на нужное кол-во строк. Проблема вот в чем: копирую 2 строки ворд.таблицы, и вставляю ниже. Копировать-то капируется, а вставляться не хочет. В чем секрет?
И еще, выделенные ячейки в ворде не объеденяются.
Код:
Public Sub CreateOrder()
Dim objWord As Word.Application, a As Integer
Dim exfio As String, expost As String, extbn As String, extel As String
Dim objDoc As Word.Document, sFile As String
Dim i As Long, sTime As Date, sTime1 As Date, sNumber As String
    Application.ScreenUpdating = False
lr = Лист1.Cells(Лист1.Rows.Count, 1).End(xlUp).Row ' last row
lc = Лист1.Cells(1, Лист1.Columns.Count).End(xlToLeft).Column 'last column
    sFile = ThisWorkbook.Path & "\Заявка.dot"
    Set objWord = New Word.Application
    Set objDoc = objWord.Documents.Open(sFile) 'открываем Word
    objWord.Visible = True
    Set ad = objWord.ActiveDocument
Set Rng = Range(Cells(2, 1), Cells(lr, lc)) 'диапазон
    Set x = Intersect([A:A], Rng).SpecialCells(xlCellTypeVisible) 'только видимые
    If x Is Nothing Then Exit Sub
'----------здесь закоментировала, чтобы другое проверить, а так работает------------
'        For Each r In x.Rows
'            i = i + 1 'счет видимых строк
'        Next
'        For Each r In x.Rows 'работа с каждой видимой строкой
'           r.EntireRow.Select
    r = ActiveCell.Row
    y = y + 1
    exfio = Cells(r, 3).Value
    expost = Cells(r, 4).Value
    extbn = Cells(r, 8).Value
    extel = Cells(r, 9).Value
    
                With objDoc
                .Activate
                
                Set adt = .Tables(2)
1:                 j = adt.Rows.Count
                If j <> (i * 2) + 1 Then
                    .Range(adt.Rows(2).Range.Start, adt.Rows(3).Range.End).Copy
                    .Bookmarks("Point").Select
'------------- Здесь у меня не получается вставить скопированный в буффер фрагмент,
'т.к. вставляется только скопированный диапазон из Excel-------
'                    .Paste
                GoTo 1
                End If
               
   
                    adt.Cell(2, 2).Range = exfio
                    adt.Cell(2, 3).Range = Format(extbn, "00000")
                    adt.Cell(2, 4).Range = extel
                    adt.Cell(2, 5).Range = expost
                    
lrw = adt.Rows.Count
                For m = 2 To lrw Step 2
                    .Range(adt.Cell(m, 1).Range.Start, adt.Cell(m + 1, 1).Range.End).Select
'------------Здесь не объединяются выделенные в вордовской таблице ячейки, пробовала Selection объединяются excel ячейки------
                     .Range.Cells.Merge
                    .Range(adt.Cell(m, 2).Range.Start, adt.Cell(m + 1, 2).Range.End).Select
                     .Range.Cells.Merge
                Next
             End With
'             Next
    sT = ThisWorkbook.Path + "\" + "Test" + sExt
    objWord.ActiveDocument.SaveAs sT

End Sub
kipish_lp вне форума Ответить с цитированием
Старый 23.09.2010, 10:33   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

1. Убираем весь этот код
2. Создаём в Excel именованный диапазон, который будет автоматически расширяться при добавлении строк
3. Копируем этот диапазон, и вставляем в ваш шаблон Word, выбрав при вставке опцию "связать с Excel"
4. Забываем о проблеме добавления строк, и обновления данных в создаваемом документе Word.
EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 11:02   #3
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Немного не подходит, на одну строку данных в excel приходятся 2 строки в Word, одна строка заполнена. Просто такие требования.
А так бы было просто замечательно, если без VBA.
kipish_lp вне форума Ответить с цитированием
Старый 23.09.2010, 11:09   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А так бы было просто замечательно, если без VBA.
Да не нужен здесь VBA...

На дополнительном листе при помощи формул формируете таблицу в таком виде, в каком она должна попасть в Word
(в основной таблице - N строк, на дополнительном листе - N*2 строк)

Потом именованный диапазон на доп. листе, и дальше как я уже говорил.

PS: Если возникнут сложности - выкладывайте файлы:
1) То, что есть сейчас в Excel (таблица из N строк)
2) Шаблон Word с примером того, что должно получиться (таблица из N*2 строк)
EducatedFool вне форума Ответить с цитированием
Старый 23.09.2010, 12:42   #5
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Спасибо!!! То, что надо!!!
kipish_lp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать лист Excel в Word? Диагностик Microsoft Office Excel 5 28.10.2010 23:05
Как написать из excel формулу в word Святой Дьявол Microsoft Office Excel 1 13.09.2010 22:07
Как сделать табличку, чтобы поля можно было редактировать и красить ячейки? TwiX Общие вопросы Delphi 4 23.08.2009 13:18
Как отредактировать диаграмму в EXCEL ? kama20 Microsoft Office Excel 3 27.04.2009 20:07
как вставить диаграмму Excel в документ Word JOHNNY BASIC Общие вопросы Delphi 0 29.09.2008 20:15