通过vb.net将表格插入到单词中

时间:2015-04-24 07:30:51

标签: vb.net ms-word vsto

我正在制作插件。必须可以插入表格。应该可以指定尺寸和位置。当我插入第一个表时它工作正常,但如果我插入另一个表,则第一个表被删除并插入新表。我仍然是vb.net的新手,所以代码可能不是最好的。

    With Globals.WordAddIn.ActiveDocument.Tables.Add(Globals.WordAddIn.ActiveDocument.Range, 1, 1)
        .TopPadding = 0
        .BottomPadding = 0
        .LeftPadding = 0
        .RightPadding = 0
        .Rows.WrapAroundText = True
        .Rows.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage
        .Rows.RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionPage
        .Rows.HorizontalPosition = dobHorizontal
        .Rows.VerticalPosition = dobVertical
        .Rows.Height = dobHeight
        .Columns.Width = dobWidth
    End With

1 个答案:

答案 0 :(得分:3)

假设你正在使用上面的代码添加两个表(可能在一个循环中),我认为问题是你用第二个表覆盖第一个表,因为你使用相同的范围。

Tables.Add的文档说:

  

您希望表格显示的范围。该表取代了   范围,如果范围没有折叠。

如果您更改代码的第一行:

With Globals.WordAddIn.ActiveDocument.Tables.Add(Globals.WordAddIn.ActiveDocument.Range, 1, 1)

类似

dim range = Globals.WordAddIn.ActiveDocument.Range;
With Globals.WordAddIn.ActiveDocument.Tables.Add(range, 1, 1)

然后在你添加第一张表后,你会这样做:

range.Collapse(Word.WdCollapseDirection.wdCollapseEnd);

它应该允许你添加两个表。

但是,如果你一个接一个地添加两个表,我认为Word将它们组合成一个表,所以你需要在它们之间添加一些空格,例如通过使用类似的东西:

range.InsertParagraphAfter();
range.Collapse(Word.WdCollapseDirection.wdCollapseEnd); ' need to collapse again to avoid overwriting

我认为它可能有用。