Формула InsertFormula: = «= СУММА (ВЫШЕ)»

#excel #vba #ms-word

#excel #vba #ms-word

Вопрос:

В настоящее время я читаю таблицу Excel и создаю форму в MS-word с соответствующими записями из таблицы Excel. Я нахожусь на 88 процентах пути, однако у меня возникают проблемы с вставкой формулы в ячейку.

 LastProdHistRow = LastProdHistRow   6               ' Adding additional rows to production history table
Set rRange = objDoc.Bookmarks(BkProdHist).Range
Set tblNew = objDoc.Tables.Add(Range:=rRange, NumRows:=LastProdHistRow, NumColumns:=10)




objDoc.Tables(2).Cell(3, 1).Range.Text = "Date"
objDoc.Tables(2).Cell(3, 2).Range.Text = "Volume"
objDoc.Tables(2).Cell(3, 3).Range.Text = "Begin Bates"
objDoc.Tables(2).Cell(3, 4).Range.Text = "End Bates"
objDoc.Tables(2).Cell(3, 5).Range.Text = "Documents"
objDoc.Tables(2).Cell(3, 6).Range.Text = "Redactions"
objDoc.Tables(2).Cell(3, 7).Range.Text = "Pages"
objDoc.Tables(2).Cell(3, 8).Range.Text = "Images"
objDoc.Tables(2).Cell(3, 9).Range.Text = "Natives"
objDoc.Tables(2).Cell(3, 10).Range.Text = "Slip-Sheets"
'objDoc.Tables(2).Cell(3, 11).Range.Text = "Size"
'objDoc.Tables(2).Cell(3, 12).Range.Text = "MB"
'objDoc.Tables(2).Cell(3, 13).Range.Text = "Bytes"
objDoc.Tables(2).Cell(LastProdHistRow   6, 4).Range.Text = "Totals"
'************** End - Create Table with Production History



'Begin************** Copy Production History Array to  Word Table *************************

a = 4           ' The starting row of the table to begin copying data
For x = LBound(LastProdHist, 1) To UBound(LastProdHist, 1)
    b = 1
        For y = LBound(LastProdHist, 2) To UBound(LastProdHist, 2)
            Debug.Print x, y, LastProdHist(x, y)
            objDoc.Tables(2).Cell(a, b).Range.Text = LastProdHist(x, y)
            b = b   1
        Next y
        a = a   1
    Next x

'End**************  Produciton History Array to Word table ****************************
 
 
  With objDoc.Tables(2)
    .Rows(2).Cells.Merge
    .Cell(2, 1).Range.Text = "DOCUMENT PRODUCTION HISTORY"
    .Cell(2, 1).Range.Style = ("Heading 1")
    .Rows(3).Range.Font.Bold = True
    .Cell(LastProdHistRow, 4).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
    **'Cell(LastProdHistRow, 5).Range.InsertFormula Formula:="=SUM(ABOVE)", NumberFormat:=""**
    .Rows(LastProdHistRow).Borders(wdBorderTop).LineStyle = wdLineStyleSingle
    .Rows(LastProdHistRow).Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
    '.Cell(LastProdHistRow, 5).Select
    'Selection.InsertFormula Formula:="=SUM(ABOVE)", NumberFormat:=""
    .Rows.SetLeftIndent LeftIndent:=0.5, RulerStyle:=wdAdjustNone
    '.Columns(10).SetWidth ColumnWidth:=64.65, RulerStyle:=wdAdjustNone
        
End With
  

Я получаю ошибку времени выполнения 438 — объект не поддерживает это свойство или метод, когда он используется в операторе with для таблицы.

Ячейка (LastProdHistRow, 5).Диапазон.Формула InsertFormula:= «= СУММА (ВЫШЕ)», числовой формат:=»»

Я также попытался выбрать ее в качестве последней строки в With инструкции и применить формулу вставки. но получаю ту же ошибку.

‘.Ячейка (LastProdHistRow, 5).Выберите ‘Выделение.Формула InsertFormula:= «= СУММА (ВЫШЕ)», числовой формат:=»»

может кто-нибудь подсказать, как сделать следующие шаги по выполнению этой работы? заранее благодарю вас.

Ответ №1:

В a нет InsertFormula метода Cell .

Попробуйте это:

 .Cell(LastProdHistRow, 5).Formula Formula:="=Sum(Above)"
  

Комментарии:

1. Это странно, я записал макрос, и он дал мне метод InsertFormula. Работа как по маслу, спасибо Тиму!3 дня бесполезных поисков.

2. InsertFormula — это только метод выбора.