#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 — это только метод выбора.