在没有OLE应用程序的Microsoft Office中提取OLE对象数据

时间:2011-12-21 13:31:10

标签: vba ms-office vsto ole

是否可以使用VBA / VSTO在Microsoft Office中提取嵌入的OLE对象的内容?我在谈论创建OLE对象的应用程序不可用的情况。在这种情况下,某种转换器应用程序可以使用原始数据。

例如,在Excel中,可以通过ActiveSheet.Shapes(x).OLEFormat访问该对象,但我还没有找到检索对象原始数据的方法。

一种方法是打开本机文件(Office Open XML / Compound File)并从那里提取数据。但也许有一种更简单的方法?

2 个答案:

答案 0 :(得分:3)

OLEObject复制到剪贴板,然后从剪贴板中获取,例如在VSTO中这样的事情:

Dim ole as OLEObject
...
ole.Copy
...
Clipboard.GetData("Embedded Object")

在VBA中,我刚刚通过Shell打开一个文件夹,然后使用SendKeys进行粘贴。

ole.copy
Shell "explorer.exe " & sFolderName, vbNormalFocus
Application.Wait Now() + TimeSerial(0, 0, 3)
Application.Sendkeys "^v"

答案 1 :(得分:1)

OLEObject复制到剪贴板,然后将其结束" Shell.Application" (动词Paste)从剪贴板到文件夹

 For Each Sh In Sheet1.OLEObjects
  If InStr(1, Sh.Name, "Object", 1) Then
   Sh.Copy 
   ' this code paste Embedded Object to folder
   CreateObject("Shell.Application").Namespace("c:\temp\!").Self.InvokeVerb "Paste"
  End If
 Next Sh