2015-10-05 58 views
2

我要计算使用Excel VBA在Word文档的页数,但有些文件无法打开,用错误5180“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

在excel中使用vba – mocca

+1

我不确定在哪个VBA标签是相关的(IMO [word-vba]不是)!但我认为[excel-vba]比[excel]更合适肯定[ms-word]比[word]更重要)。问题模板是否受到保护? – pnuts

+0

看到这个:http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Word/Q_21231990.html – Trimax

回答

0

这是可能得到的页面数不打开文件,使用Microsoft开发人员支持OLE文件属性读者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物体。

+0

非常感谢你。 – mocca

+0

这是否适合您? –