表更新时Word中的范围不断变化

时间:2017-01-10 17:35:53

标签: excel-vba ms-word vba excel

我在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

结束功能

0 个答案:

没有答案