如何解决从Excel VBA向Word Doc添加目录
我正在尝试操纵excel的单词形式,我很难在excel中建立单词范围。然后,一旦我确定了该范围,便想在该范围内插入目录。
这是我的代码的片段:
Dim wordApp As Object
Set wordApp = CreateObject("word.application")
Set wDoc = wordApp.Documents.Open(fileName:=templateLocation,ReadOnly:=False)
Dim TOCRange As Word.Range 'establishing my word range
Set TOCRange = wDoc.Paragraphs(3).Range
TOCRange.SetRange Start:=TOCRange.Start,End:=wDoc.Paragraphs(3).Range.End
'inserting the table of contents ERROR
wDoc.tableOfContents.Add Range:=TOCRange,RightAlignPageNumbers:=True,_
UseheadingStyles:=True,IncludePageNumbers:=True,UseHyperlinks:=False,_
HidePageNumbersInWeb:=True,USEOutlineLevels:=False
这导致我收到运行时错误“ 438” -“对象不支持此属性或方法。
从excel调用单词macro时,我可以很好地使用此宏,但是在这种情况下,我似乎无法识别文档对象。这需要完全从excel格式完成,因为我的模板文档中不能包含任何vba代码。
有关此主题的任何信息或资源将不胜感激。努力每天变得更好!
解决方法
您需要在Word中区分文档和模板。这是行话。在Word中,模板是一种非常特殊的文件。通常,您不打开模板,而是使用Documents.Add方法基于模板添加文档。这是对该方法的参考。 https://docs.microsoft.com/en-us/office/vba/api/word.documents.add?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Den-US%26k%3Dk(vbawd10.chm158072846)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue%26f%3D255%26MSPPError%3D-2147217396
在这方面,我确实有一个问题。为什么不简单地在模板中放置一个TOC字段而不是使用代码添加它呢?
我用了一些代码来在新文档中创建目录,然后将其另存为Deleteme.docx。我希望这有帮助。这需要引用Word对象模型。
Sub AddTOC()
Dim wordApp As Word.Application
Dim TOCRange As Word.Range 'establishing my word range
Dim wdoc As Word.Document
'
Set wordApp = GetObject(Class:="Word.Application")
'Set wordApp = CreateObject("word.application")
Set wdoc = wordApp.Documents.Add 'Open(Filename:=templateLocation,ReadOnly:=False)
Set TOCRange = wdoc.Range
TOCRange.Paragraphs.Add
TOCRange.Paragraphs.Add
TOCRange.Paragraphs.Add
Set TOCRange = wdoc.Paragraphs(3).Range
wdoc.TablesOfContents.Add Range:=TOCRange ' This does the same as your code
wdoc.SaveAs2 Filename:="Deleteme.docx"
wdoc.Close
Set TOCRange = nothing
Set wdoc = nothing
Set wordApp = nothing
' Debug.Print wdoc.Name
' Set TOCRange = wdoc.Paragraphs(3).Range
' TOCRange.SetRange Start:=TOCRange.Start,End:=wdoc.Paragraphs(3).Range.End
'
' 'inserting the table of contents ERROR
'
' wdoc.tableOfContents.Add Range:=TOCRange,RightAlignPageNumbers:=True,_
' UseHeadingStyles:=True,IncludePageNumbers:=True,UseHyperlinks:=False,_
' HidePageNumbersInWeb:=True,UseOutlineLevels:=False
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。