Я пытаюсь использовать vba для объединения текста, таблицы и изображения в файл слова из файла Excel. Приведенный ниже код работает большую часть времени. Однако иногда появляется ошибка 462.
Я искал вокруг. В некоторых комментариях говорится, что это происходит потому, что существуют неквалифицированные ссылки. Однако я не знаю, что и где находится безоговорочная ссылка. Странная вещь: обычно первый запуск в порядке. После этого эта ошибка обычно появляется только в четные времена. Я уверен, что закрывал файл word каждый раз, независимо от того, успешно выполняется код или нет.
Вот код. Я поместил комментарий, чтобы указать строку, где происходит ошибка.
Dim WordApp As Object, WordDoc As Object
Set WordApp = New Word.Application
With WordApp
.Visible = True
Set WordDoc = .Documents.Add
.ActiveDocument.Select
With .Selection
'narrative
Sheet3.Range("G2").Copy
.PasteExcelTable False, False, False
'IO
Sheet2.Range("A1","B11").Copy
.PasteExcelTable False, False, False
WordDoc.Tables(1).Columns(1).Width = InchesToPoints(1.5) 'Error 462 appears periodically on this line
WordDoc.Tables(1).Columns(2).Width = InchesToPoints(4.5)
WordDoc.Tables(1).Rows.Height = 20
'HMI
Sheet9.Range("A4").Copy
.PasteExcelTable False, False, False
Sheet9.Shapes("Group_Htr").Copy
.PasteSpecial
.ShapeRange(1).WrapFormat.Type = wdWrapInline
.EndKey unit:=wdStory
'P&ID
.TypeParagraph
.InsertBreak Type:=wdSectionBreakNextPage
With .PageSetup
.LineNumbering.Active = False
.Orientation = wdOrientPortrait
.TopMargin = InchesToPoints(1)
.BottomMargin = InchesToPoints(1)
.LeftMargin = InchesToPoints(1)
.RightMargin = InchesToPoints(1)
.Gutter = InchesToPoints(0)
.HeaderDistance = InchesToPoints(0.5)
.FooterDistance = InchesToPoints(0.5)
.PageWidth = InchesToPoints(11)
.PageHeight = InchesToPoints(17)
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
.SectionStart = wdSectionNewPage
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.VerticalAlignment = wdAlignVerticalTop
.SuppressEndnotes = False
.MirrorMargins = False
.TwoPagesOnOne = False
.BookFoldPrinting = False
.BookFoldRevPrinting = False
.BookFoldPrintingSheets = 1
.GutterPos = wdGutterPosLeft
If .Orientation = wdOrientPortrait Then
.Orientation = wdOrientLandscape
End If
End With
Sheet10.Range("A4").Copy
.PasteExcelTable False, False, False
Sheet10.Shapes("Group_Htr").Copy
.PasteSpecial 'Error 4198 appears occasionally on this line
End With
.Activate
End With