【问题标题】:Save embedded word document from Excel (2007) VBA从 Excel (2007) VBA 保存嵌入的 word 文档
【发布时间】:2014-04-06 16:34:02
【问题描述】:

我创建了以下代码,用于将 Excel 工作表中的嵌入 Word 文档导出到工作簿的路径:

Private Sub Export()

Dim sh As Shape
Dim objWord As Object 'Word.Document
Dim objOLE As OLEObject

    Set sh = Sheet5.Shapes("Object 1")

    sh.OLEFormat.Activate

    Set objOLE = sh.OLEFormat.Object

    Set objWord = objOLE.Object

    objWord.Application.Visible = False

    objWord.SaveAs2 Filename:=ActiveWorkbook.Path & "\MyTemplate.docx", FileFormat:= _
    wdFormatDocumentDefault

    objWord.Application.Quit

End Sub

它在 Excel 2013 上运行良好,但是当我尝试在我的办公室在 Excel 2007 上运行它时,它在 @ 行出现运行时错误“438”“对象不支持此属性或方法” 987654322@

尝试过定义 objWord 但没有运气。有什么建议吗?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    用这个代替:

    objWord.SaveAs Filename:=ActiveWorkbook.Path & "\MyTemplate.docx", FileFormat:= _
        wdFormatDocumentDefault
    

    方法SaveAs2仅在word 2010中引入。

    另外,如果您没有在 excel vba 中添加对单词库的引用,您可能需要将单词常量 wdFormatDocumentDefault 更改为其值 16

    objWord.SaveAs Filename:=ActiveWorkbook.Path & "\MyTemplate.docx", FileFormat:=16
    

    【讨论】:

    • 是的,似乎已经做到了。出于好奇,与SaveAs2 相比,使用SavaAs 有什么缺点吗?
    • 实际上thouse方法几乎相同,除了:Save2() takes an extra argument, CompatibilityMode.详细信息请参阅此帖子:stackoverflow.com/questions/4107210/…
    • 感谢您的澄清!我想我会坚持SaveAs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多