[英]Adding table of contents to word Doc from excel VBA
我试图操纵 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 调用单词宏时,我可以很好地使用此宏,但在这种情况下,我似乎无法识别文档 object。 这需要完全从 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 字段而不是使用代码来添加它?
我对您的代码进行了一些操作,只是在一个新文档中创建了一个 TOC,然后将其保存为 Deleteme.docx。 我希望这有帮助。 这需要参考字 object model。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.