我想使用Excel VBA计算Word文档中的页数,但是有些文件无法打开,
"错误5180 Word无法打开文档模板"。
Function PageWord(FullFile_Name As Variant, PF As Long)
Dim objWord As Object
Dim objDoc As Object
On Error Resume Next
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Set objDoc = objWord.Documents.Open(filename:="" & FullFile_Name & "", ReadOnly:=False)
objDoc.Repaginate
PageWord = objDoc.BuiltinDocumentProperties(14) 'Pages
Debug.Print PageWord & "-" & FullFile_Name
objWord.Quit (False)
End Function
如何打开这些文件,还是有另一种方法来获取页数?
答案 0 :(得分:0)
使用Microsoft Developer Support OLE File Property Reader 2.1可以在不打开文件的情况下获取页数
http://www.microsoft.com/en-us/download/details.aspx?id=8422
安装完成后,您可以实例化属性读取器的实例并找到如下页面计数:
Function PageWord(FullFile_Path as string)
Dim dso As Object
Set dso = CreateObject("DSOFile.OleDocumentProperties")
dso.Open (FullFile_Path)
PageWord = dso.SummaryProperties.PageCount
dso.Close
Debug.Print PageWord & "-" & FullFile_Path
End Function
如果在函数外部实例化dso对象并将其与文件路径一起传递(或者如果将其范围设置为函数可访问),则无需打开和关闭一堆dso对象,或者。