是否可以使用VBA / VSTO在Microsoft Office中提取嵌入的OLE对象的内容?我在谈论创建OLE对象的应用程序不可用的情况。在这种情况下,某种转换器应用程序可以使用原始数据。
例如,在Excel中,可以通过ActiveSheet.Shapes(x).OLEFormat
访问该对象,但我还没有找到检索对象原始数据的方法。
一种方法是打开本机文件(Office Open XML / Compound File)并从那里提取数据。但也许有一种更简单的方法?
答案 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