Это форум по работе с Ексель
Но несколько рекомендаци Я вам дам
Обращать к файлу Ворд для набора текста нужно так - With oWordDoc.ActiveWindow.Selection (пример)
Код |
---|
With oWordDoc.ActiveWindow.Selection
''' /// ШАПКА ДОКУМЕНТА
.InsertAfter "Оголошення" + Chr(10) 'печатаем текст с переходом на новую строку
.InsertAfter "про проведення закупівлі через систему електронних закупівель" + Chr(10)
.ParagraphFormat.Alignment = 1 'wdAlignParagraphCenter"=1 'форматируем текст по центру
.Font.Bold = True
.Font.Size = 13
.EndOf Unit:=4 'wdParagraph = 4'снимаем выделение с текста
''' /// Основной Текст документа
.TypeParagraph ''начинаем новый параграф
.ParagraphFormat.FirstLineIndent = 30 'отступ по умолчанию (форматирование) CentimetersToPoints(1) = 1* 30 = обход Error 462
.Font.Bold = False
.Font.Size = 12
.ParagraphFormat.Alignment = 3 ''wdAlignParagraphJustify по ширине ' "wdAlignParagraphCenter"=1
.InsertAfter "1. Замовник:" + Chr(10)
|
Снятие выделения с текста - .EndOf Unit:=4
Для вставки таблицы после текста необходимо сперва снять выделение а потом вставить таблицу.
После можно дописать текст (пример)
Код |
---|
''' Загружаем таблицу с данными
If IsArray(Arr) Then
.InsertParagraphAfter
.EndOf
.MoveUp Unit:=5, Count:=1 'отступ вверх на одну строку для вставки таблицы)Unit:=wdLine=5
Dim oWordTable
Set oWordTable = oWordDoc.Tables.Add(oWordDoc.Application.Selection.Range, UBound(Arr(0)), UBound(Arr(1)))
With oWordTable
.Range.ParagraphFormat.Alignment = 0 '= wdAlignParagraphLeft
.Range.Cells.VerticalAlignment = 1 '1=wdCellAlignVerticalCenter '3=wdCellAlignVerticalBottom 'вертикальное размешениеснизу текст
'''.Borders(-3).LineStyle = 3 'wdLineStyleDashSmallGap 'стиль линий таблицы
'''.Borders(-3).LineStyle = 0 'wdLineStyleNone 'стиль линий таблицы невидимый 'wdBorderBottom = -3 (&HFFFFFFFD)
If .Style <> "Сетка таблицы" Then .Style = "Сетка таблицы" 'видимость сетки таблицы
'Форматируем столбцы таблицы
For x = LBound(Arr(1)) To UBound(Arr(1))
.Columns(x).SetWidth ColumnWidth:=Arr(1)(x), RulerStyle:=0
' .Columns(1).SetWidth ColumnWidth:=Application.CentimetersToPoints(5.5), RulerStyle:=0
Next x
.Rows.SetLeftIndent LeftIndent:=5.5, RulerStyle:=0 'wdAdjustNone
.Rows(1).Range.Font.Bold = True
.Rows(1).Range.ParagraphFormat.Alignment = 1 'wdAlignParagraphCenter
.Rows(1).Range.Cells.VerticalAlignment = 1 'wdCellAlignVerticalCenter '= wdCellAlignVerticalTop
'Загружаем информацию в таблицу
For x = LBound(Arr(0)) To UBound(Arr(0))
For n = 1 To UBound(Arr(1))
With .cell(x, n).Range
' If x = 1 Then .Font.Bold = True Else .Font.Bold = False
.Font.Size = 12
.Text = Arr(0)(x, n) 'печатаем текст в ячейке с адресом '(номер_строки, номер_столбца)
End With
Next n
Next x
End With
.EndKey Unit:=6, Extend:=0 'перевод каретки в конец документа Unit:=wdStory, Extend:=wdMove
.EndOf
.InsertAfter "Учасник визначає ціну з урахуванням усіх своїх витрат, податків і зборів, " + _
"що сплачуються або мають бути сплачені, в тому числі на транспортування до місця поставки, " + _
"страхування та таке інше." + vbCrLf
.EndOf
|
Важно: Все константы перевести в цифровой код - (.Borders(-3).LineStyle = 0 )
Причина проста. Судя по кускам кода которые Вам предлогали выполняется позднее связывание с объктом Ворд.
В таком случае если не будет референс на Ворд возникнет ошибка - Ексель плохо понимает константы Ворд.
Далее изучайте самостоятельно.
Удачи в решении проекта