2011-12-21 10 views
2

VBA/VSTOを使用してMicrosoft Officeに埋め込みOLEオブジェクトのコンテンツを抽出することはできますか?私は、OLEオブジェクトが作成されたアプリケーションが利用できない状況について話しています。この場合、何らかのコンバータアプリケーションが生データを利用することができます。OLEアプリケーションなしでMicrosoft OfficeでOLEオブジェクトデータを抽出

たとえば、ExcelではオブジェクトはActiveSheet.Shapes(x).OLEFormatでアクセスできますが、オブジェクトの生データを取得する方法が見つかりませんでした。

1つの方法は、ネイティブファイル(Office Open XML/Compound File)を開いてそこからデータを抽出することです。しかし、もっと簡単なアプローチがありますか?

+1

をフォルダにクリップボードから「Shell.Application」(動詞Paste)の上にそれを得ますクリップボードから。私はそれをテストしていないが、それは試してみる価値がある。それがどのように機能するか教えてください。 – Jon49

+0

良いアイデア。シェイプをコピーし、 'Clipboard.GetData(" Embedded Object ")にアクセスすると、そのトリックが実行されます。ありがとう! –

+0

クール、私はそれを信用できるように答えとして投稿します。私は今同じことをしていますが、VBAでそれをやる必要があります。 – Jon49

答えて

3

OLEObjectをクリップボードにコピーし、クリップボードからコピーします。 VSTOでこのような何か:VBAで

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

私はちょうどShellが、その後SendKeysを使用して貼り付けてフォルダを開いてきました。クリップボードへ

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

コピーOLEObject、その後、あなたがクリップボードにコピーし、それを貼り付けるVSTOを使用することができます

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 
関連する問題