【问题标题】:Save an embedded Word document in an Excel spreadsheet to disk using VBA使用 VBA 将 Excel 电子表格中的嵌入 Word 文档保存到磁盘
【发布时间】:2010-03-03 09:22:21
【问题描述】:

我们有一个 Excel 电子表格,目前使用存储在公司 LAN 上的 Word 模板生成报告。这适用于内部用户,但不适用于未连接到 LAN 的任何人,例如笔记本电脑用户。

管理层不想将模板作为单独的文件分发给外部用户,但更愿意将其嵌入到隐藏工作表的电子表格中。然后建议在生成报告时将嵌入的模板保存到用户临时路径并从那里生成报告。

那么我的问题是如何使用 VBA 将嵌入的 Word 模板保存到磁盘。这似乎是一项简单的任务,但我在谷歌的任何地方都没有找到解决方案。任何帮助将不胜感激。

【问题讨论】:

  • 您能否展示一些代码,以便我了解您如何访问嵌入的 word 模板对象?它是 OleObject 吗?
  • 这与嵌入式软件无关,因此不应该这样标记。 – 伊恩

标签: excel vba object ole


【解决方案1】:

好的,我想我可能有答案了,但它只在 Excel 2010 中测试过。

Sub SaveEmbedded()
Dim sh As Shape
Dim objWord As Object ''Word.Document
Dim objOLE As OLEObject

    ''The shape holding the object from 'Create from file'
    ''Object 2 is the name of the shape
    Set sh = ActiveSheet.Shapes("Object 2")

    ''Activate the contents of the object
    sh.OLEFormat.Activate

    ''The OLE Object contained
    Set objOLE = sh.OLEFormat.Object

    ''This is the bit that took time
    Set objWord = objOLE.Object

    ''Easy enough
    objWord.SaveAs2 Filename:="c:\docs\template.dot", FileFormat:= _
    wdFormatTemplate ''1=wdFormatTemplate
End Sub

【讨论】:

  • 您好,感谢您的回复。模板是一个 OleObject。目前它是一个单独的文件,位于网络共享上。我们只决定将其嵌入到单独的工作表中,因为笔记本电脑用户无法访问网络共享,所以我还没有任何代码可以访问该对象。我们使用的是 Excel 2003,上面的代码不起作用。它在 saveas2 行上失败,并出现错误“对象不支持此属性或方法”。我尝试将其更改为 saveas,但随后出现“应用程序定义或对象定义错误”。我也尝试将 objWord 声明为 Word.Document。
  • SaveAs2 是 2010 版本,试试 SaveAs。我有一个较早的版本,但我目前无法测试。将 objWord 声明为 Word.Document 只会帮助您通过智能感知找到属性。
  • 我的代码可以工作了。偶然我把这个物体变成了一张照片。现在单击对象会在公式栏中显示 =EMBED("Picture","") 而不是 =EMBED("Document","")。使用 SaveAs 现在可以正常工作,并且保存的文件是 Word 模板。再次感谢您的帮助。
【解决方案2】:

查看 MSDN 文档。

我相信您正在寻找另存为方法。

这里有一个例子; MSDN - VBA Ref - SaveAs Method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    相关资源
    最近更新 更多