Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 以编程方式在Word中创建表_Vb.net_Ms Word - Fatal编程技术网

Vb.net 以编程方式在Word中创建表

Vb.net 以编程方式在Word中创建表,vb.net,ms-word,Vb.net,Ms Word,我正在生成表格,并将它们动态地写入word。我不知道每次我将数据写入word时会有多少个表,我遇到的问题是第二个表被写入第一个表的第一个单元格中。如果有第三张桌子,它会放在我第二张桌子的第一个格子里 有没有办法将光标移出表格?我也尝试过为每个表创建一个新范围,但同样的情况也发生了 我也尝试过类似tbl.Range.InsertParagraphAfter()的方法。 我最接近的方法是使用重新定位方法,但这只适用于两个表。将表插入word的最简单方法是生成html表,然后将其插入到文件中光标所在的

我正在生成表格,并将它们动态地写入word。我不知道每次我将数据写入word时会有多少个表,我遇到的问题是第二个表被写入第一个表的第一个单元格中。如果有第三张桌子,它会放在我第二张桌子的第一个格子里

有没有办法将光标移出表格?我也尝试过为每个表创建一个新范围,但同样的情况也发生了

我也尝试过类似
tbl.Range.InsertParagraphAfter()的方法。


我最接近的方法是使用
重新定位
方法,但这只适用于两个表。

将表插入word的最简单方法是生成html表,然后将其插入到文件中光标所在的位置


它允许轻松创建任意复杂的嵌套表,而无需使用大多数极其困难的word互操作功能。

您希望将每个新表放在哪里?在文件的末尾?从
文档的末尾开始创建新表。Content

我也遇到了同样的问题,并且了解到必须将范围折叠到表范围的末尾,然后插入换行符,再次折叠,然后插入新表

下面是一些使用表和书签的代码-它旨在展示如何使用原生和VSTO宿主书签(并向VSTO添加一个单击处理程序)-但您可能只需要部分代码。寻找

With tbRange
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd)
.InsertParagraphAfter()
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select()
End With
下面-这就是您需要禁止表嵌套中的表

Sub Assign3TablesToNativeBookmarks()
        'this is the native Word bookmark
        Dim bm As Word.Bookmark
        Dim tb As Word.Table
        Dim tbRange As Word.Range
        Dim i As Integer
        For i = 1 To 3
            bm = Me.Bookmarks.Add(Name:="nestedBookmark" & CStr(i), _
                                  Range:=ThisApplication.Selection.Range)
            tb = bm.Range.Tables.Add(Range:=bm.Range, NumRows:=2, NumColumns:=2)
            With tb
                .Style = "Table Grid"
                tbRange = .Range
                With tbRange
                    .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd)
                    .InsertParagraphAfter()
                    .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select()
                End With
                bm = Me.Bookmarks.Add(Name:="nestedbookmark" & CStr(i), Range:=.Range)
            End With
        Next
        Dim bmMain As Word.Bookmark
        Dim mainBookmarkRange As Word.Range
        Dim mainBookmarkRangeStart As Integer
        Dim mainBookmarkRangeEnd As Integer
        mainBookmarkRangeStart = Me.Bookmarks(1).Start
        mainBookmarkRangeEnd = Me.Bookmarks(Me.Bookmarks.Count).End
        mainBookmarkRange = Me.Range(Start:=mainBookmarkRangeStart, End:=mainBookmarkRangeEnd)
        bmMain = Me.Bookmarks.Add(Name:="mainBookmark", Range:=mainBookmarkRange)
    End Sub
    Sub Assign3TablesToHostControlBookmarks()
        'Word host control of Bookmark
        'bookmarks must be destroyed before resetting the object 
        'added handler
        Dim bm As Microsoft.Office.Tools.Word.Bookmark
        'different from the interop one 
        Dim tb As Word.Table
        Dim tbRange As Word.Range
        Dim i As Integer
        For i = 1 To 3
            bm = Me.Controls.AddBookmark(range:=ThisApplication.Selection.Range, _
                                         Name:="nestedBookmark" & CStr(i))
            tb = bm.Range.Tables.Add(Range:=bm.Range, NumRows:=2, NumColumns:=2)
            With tb
                .Style = "Table Grid"
                tbRange = .Range
                With tbRange
                    .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd)
                    .InsertParagraphAfter()
                    .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select()
                End With
                bm.Delete()
                'this deletes the bookmark before it can be recreated
                bm = Me.Controls.AddBookmark(range:=.Range, Name:="nestedBookmark" & CStr(i))
                AddHandler bm.Selected, AddressOf bm_Selected
                'handler added 
            End With
        Next
        Dim bmMain As Microsoft.Office.Tools.Word.Bookmark
        Dim mainBookmarkRange As Word.Range
        Dim mainBookmarkRangeStart As Integer
        Dim mainBookmarkRangeEnd As Integer
        mainBookmarkRangeStart = Me.Bookmarks(1).Start
        mainBookmarkRangeEnd = Me.Bookmarks(Me.Bookmarks.Count).End
        mainBookmarkRange = Me.Range(Start:=mainBookmarkRangeStart, End:=mainBookmarkRangeEnd)
        bmMain = Me.Controls.AddBookmark(range:=mainBookmarkRange, Name:="mainBookmark")
    End Sub
    Private Sub bm_Selected(ByVal sender As Object, ByVal e As Microsoft.Office.Tools.Word.SelectionEventArgs)
        MessageBox.Show("Hey, you have selected bookmark: " & sender.Name & ". " & _
                        "You did this at " & FormatDateTime(Date.Now(), DateFormat.LongTime))
    End Sub

我已经准备好了添加表的所有代码,问题是一旦构建了表,就将光标移到表外。我希望每张桌子是分开的,而不是放在前一张桌子下面。我打开一个新的word文档,然后开始添加表。我只希望他们是一个接一个。