我正在生成表格并将它们写入文字。我不知道每次将数据写入单词时会出现多少个表,并且我遇到的问题是第二个表写入第一个表的第一个单元格内。如果有第三张桌子放在第二张桌子的第一个单元格内。以编程方式在Word中创建表格
有没有办法将光标移出表格?我曾尝试为每个表创建一个新的范围,但同样的事情发生。
我也曾尝试之类的东西tbl.Range.InsertParagraphAfter()
我用的是Relocate
方法来最接近的,但是这只是工作的两个表。
感谢 本
我正在生成表格并将它们写入文字。我不知道每次将数据写入单词时会出现多少个表,并且我遇到的问题是第二个表写入第一个表的第一个单元格内。如果有第三张桌子放在第二张桌子的第一个单元格内。以编程方式在Word中创建表格
有没有办法将光标移出表格?我曾尝试为每个表创建一个新的范围,但同样的事情发生。
我也曾尝试之类的东西tbl.Range.InsertParagraphAfter()
我用的是Relocate
方法来最接近的,但是这只是工作的两个表。
感谢 本
我有这个完全相同的问题,并得知您必须将范围折叠到表格范围的末尾,然后插入换行符,再次折叠,然后插入新的表格。
这里有一些使用表和书签的代码 - 它是为了展示如何使用本机和VSTO主机书签(并添加一个单击处理程序到VSTO) - 但您可能只需要部分代码。寻找
With tbRange
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd)
.InsertParagraphAfter()
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select()
End With
低于 - 这就是你需要禁止table-within-table嵌套。
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
最简单的方式插入表格到字是生成HTML表格,然后在光标所在的位置插入到文件这一点。
它允许轻松创建任意复杂的嵌套表,而无需使用大多数难以理解的难度字互操作函数。
你想把每个新表放在哪里?在文件的末尾?在Document.Content
的末尾开始新表格。
在前面的表下面。我打开一个新的word文档,然后开始添加表格。我只想让他们成为另一个下的人。 – Ben 2009-09-21 12:51:01
我已经拥有了添加表格的所有代码,问题是将表格移动到表格外,一旦它被构建完成。我希望每个表都是独立的,不是嵌套的 – Ben 2009-09-21 11:48:48