Страницы: 1
RSS
Обращение к свойствам Строк/Ячеек таблицы Word из Excel
 
Полный код не стал выкладывать, суть такая: есть шаблон в ворде, в шаблоне таблица у которой есть только шапка. Процедура открывает этот шаблон и эксель файл,  добавляет новую строку в таблице вордовского шаблона и из эксель, через цикл информация копируется в соответствующие ячейки добавленной строки. Проблема в том что вновь добавленные строки копируют формат из предыдущей, т.е. из шапки, а мне нужно по-другому, пытался это дело по-всякому решить, не получается, подскажите товарищи в чём загвоздка? Ошибку выдаёт на строке с .Font.Size = 10
Код
Sub Содержание()

   Dim objWrdApp As Object, objWrdDoc As Object
   Set objWrdApp = CreateObject("Word.Application")
   objWrdApp.Visible = True
   Set objWrdDoc = objWrdApp.Documents.Open("L:\Шаблон.docx")
   
   objWrdDoc.Tables(1).Rows(1).Select
   With objWrdDoc.Tables(1).Rows(1)
         .Font.Size = 10
         .Font.Bold = wdToggle
         .ParagraphFormat.Alignment = wdAlignParagraphLeft
    End With
                    
    objWrdDoc.Close True
    'закрываем приложение Word
    objWrdApp.Quit
    'очищаем переменные Word - обязательно!
    Set objWrdDoc = Nothing: Set objWrdApp = Nothing

End Sub
Изменено: abricos29 - 16.05.2017 09:20:59
 
Excel не знает переменных Word (wdToggle, wdAlignParagraphLeft)
Используйте вместо них их числовые значения.
 
Можете дать прямую ссылку? я либо не понимаю, либо не правильно запрос делаю в браузере! не получается найти что это такое.
 
Цитата
RAN написал: Используйте вместо них их числовые значения.
Код
wdToggle = 9999998
wdAlignParagraphLeft = 0
Согласие есть продукт при полном непротивлении сторон
 
Цитата
abricos29 написал:
Ошибку выдаёт на строке с .Font.Size = 10
А Вы убедились, что у ячеек Word-а есть эти свойства? Или Вы решили, что таблицы в Word в точности такие же, как в Excel? :)

Цитата
abricos29 написал:
Можете дать прямую ссылку?
Как из Excel обратиться к другому приложению
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
RAN написал:
Excel не знает переменных Word
Да, это бесспорно верно, но код ругается на фразе
Код
.Font.Size = 10
А вот так - не ругается
Код
objWrdDoc.Tables(1).Rows(1).Select   
With Selection
         .Font.Size = 10
правда, и не отрабатывает (у меня) (размер остается 11, как и был,  
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
The_Prist написал:
А Вы убедились, что у ячеек Word-а есть эти свойства?
Запись макроса из ворда - дает точно такую же строку, только через свойство Selection  
Код
With Selection
        .Font.Name = "Times New Roman"
        .Font.Size = 9
    End With
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
The_Prist написал:
Как из Excel обратиться к другому приложению
Спасибо, что я оттуда и и взял костяк кода, с вашего сайта(если комментарии к коду не удалил, вы бы точно узнали)! Да, конечно я понимаю, что таблицы в Excel и Word разные по свойствам. Но прямого решения в поиске я не нашёл, и решил пробовать по аналогии, не вышло.
 
Цитата
Sanja написал:
RAN  написал: Используйте вместо них их числовые значения.
Использовал, та же ошибка !
Код
Sub Содержание()
 
   Dim objWrdApp As Object, objWrdDoc As Object
   Set objWrdApp = CreateObject("Word.Application")
   objWrdApp.Visible = True
   Set objWrdDoc = objWrdApp.Documents.Open("L:\Шаблон.docx")
    
   objWrdDoc.Tables(1).Rows(1).Select
   With objWrdDoc.Tables(1).Rows(1)
         .Font.Bold = 9999998
         .ParagraphFormat.Alignment = 0
    End With
                     
    objWrdDoc.Close True
    'закрываем приложение Word
    objWrdApp.Quit
    'очищаем переменные Word - обязательно!
    Set objWrdDoc = Nothing: Set objWrdApp = Nothing
 
End Sub
 
Цитата
Михаил Лебедев написал:
Запись макроса из ворда - дает точно такую же строку, только через свойство Selection  
Дело в том, что мы обращаемся к Таблице другого приложения, у которого свойства Таблицы отличаются от Exel-ких, в том и загвоздка, как объяснить экселю что в таблице ворда надо изменить размер шрифта определённой строки/ячейки.
 
Цитата
RAN написал:
Excel не знает переменных Word (wdToggle, wdAlignParagraphLeft)
Используйте вместо них их числовые значения.
Оказалось что знает!
Код
Sub Содержание()
  
   Dim objWrdApp As Object, objWrdDoc As Object
   Set objWrdApp = CreateObject("Word.Application")
   objWrdApp.Visible = True
   Set objWrdDoc = objWrdApp.Documents.Open("L:\Шаблон.docx")
     
   With objWrdDoc.Tables(1).Rows(1).Range
         .Font.Size = 10
         .Font.Bold = wdToggle
         .ParagraphFormat.Alignment = wdAlignParagraphLeft
     End With
                      
    objWrdDoc.Close True
    'закрываем приложение Word
    objWrdApp.Quit
    'очищаем переменные Word - обязательно!
    Set objWrdDoc = Nothing: Set objWrdApp = Nothing
  
End Sub
Изменено: abricos29 - 16.05.2017 10:55:19
 
Цитата
abricos29 написал:
Дело в том, что мы обращаемся к Таблице другого приложения
Да, спасибо, разобрался с...
Вот так - будет работать        .
Код
With objWrdDoc.Tables(1).Rows(1)
    .Range.Font.Size = 10
Изменено: Михаил Лебедев - 16.05.2017 11:35:32
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, перед Range тчк потеряли.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
JayBhagavan написал:
перед Range тчк потеряли
да, спасибо, запасную вставил :)
Изменено: Михаил Лебедев - 16.05.2017 11:36:23
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
abricos29 написал:
Оказалось что знает!
Это означает, что у вас подключена библиотека Word. В статье The_Prist, об этом сказано.
 
Цитата
RAN написал:
Это означает, что у вас подключена библиотека Word. В статье  The_Prist , об этом сказано.
Спасибо!
Страницы: 1
Читают тему
Наверх