我在word中创建多个表,并使用excel文件中的数据填充它们。 编码在Excel VBA中完成。我使用word文档中的Range对象来标识插入下一个表的位置。 所以我添加一个表,填充它并在其下面插入一个新行。
然后我将当前表范围的结尾存储为添加下一个表的参考。到目前为止没问题。 但是当我将大量数据插入表中然后更改列的宽度时,这需要一些时间。因此,一旦我想创建下一个表,我之前存储的引用可能不再有效。
同时整个文件发生了变化,我存储的位置不再存在。有没有解决的办法?目前我等待2秒钟没有得到错误。
Public Function PrintWord(Word, Document, Start As Integer) As Integer
Dim intNoOfRows
Dim intNoOfColumns
intNoOfRows = 7
intNoOfColumns = 2
x = Start
Set objRange = Document.Range(x, x)
Set objTable = Document.Tables.Add(objRange, intNoOfRows, intNoOfColumns)
objTable.Borders.Enable = True
objTable.Cell(1, 1) = [...] ' This is where I populate the table and change the width etc.
Dim y As Integer
Application.Wait (Now + TimeValue("0:00:02")) ' if I wait here, everything works, if not the Range for the next table is some times not valid
y = objTable.Range.End + 1 ' Store the end of the table as a reference for the next one
Document.Range(x, y).ParagraphFormat.SpaceAfter = 3
objTable.Columns(1).PreferredWidthType = 3 ' wdPreferredWidthPoints
objTable.Columns(1).PreferredWidth = Word.CentimetersToPoints(3.5)
objTable.Columns(2).PreferredWidthType = 3 ' wdPreferredWidthPoints
objTable.Columns(2).PreferredWidth = Word.CentimetersToPoints(13)
objTable.Select
Word.Selection.MoveDown Unit:=5, count:=1 ' Move below table
Word.Selection.TypeParagraph
PrintWord = y ' Returns the position for the next Table
结束功能