我正在使用vba代码创建word文档,我正在将一些数据从excel传输到我创建的单词中的表。我创建一个表没有问题,但我在表后面开始一个新行/段时出错。
现在我的代码会选择整个表格,但是不能在表格之后开始新的文本,所以后来的内容被添加到我创建的表格中的单元格(1,1)。
我只是向您展示我的代码结构,并在Selection.Collapse
该代码行出现错误。错误是运行时错误438,对象不支持此属性或方法。我在网上做了一些研究,但没有帮助。
Sub Word_Report()
Dim objWord As Object
Dim objDoc As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
With objWord.Selection
Set myTable = objDoc.Tables.Add(Range:=objWord.Selection.Range, NumRows:=7, NumColumns:=3)
myTable.Borders.Enable = True
''' my table contents'''
end with
'start new line after table
objDoc.Range.InsertAfter Chr(13) & "Hello"
.Font.Size = 11
.BoldRun
End sub
答案 0 :(得分:1)
被修改
尝试以下方法:
Sub Word_Report()
Dim objWord As Object
Dim objDoc As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
With objWord.Selection
Set myTable = objDoc.Tables.Add(Range:=objWord.Selection.Range, NumRows:=7, NumColumns:=3)
myTable.Borders.Enable = True
''' my table contents'''
End With
'start new line after table
objDoc.Range.InsertAfter Chr(13) & "Hello"
End Sub
使用.Range
代替Selection
答案 1 :(得分:0)
要在表格后立即插入文本,您必须设置表格范围,然后折叠范围。插入表格,将所有数据放入表格中,格式化表格。
获得所需的代码后,请使用如下代码,其中h1
是Word.Range
,而objTemplate
是Word.Document
对象:
Set h1 = objTemplate.Tables(TableNum).Range
h1.Collapse Direction:=wdCollapseEnd