2011-06-28 48 views
1

Word文書に埋め込まれたMS-Office Drawing Objectsをイメージファイルに保存するという単純な要件があります。次のコードは、Powerpointからの画像抽出に使用されました。しかし、ActivePresentationをActiveDocumentに変更すると、MS-Wordではうまくいきません。シェイプオブジェクトではエクスポートメソッドを使用できませんでした。何か案は?VBAを使用してWordシェイプを画像に保存するにはどうすればよいですか?

Dim oPPTShap as Shape 
For k = 1 To .Slides(intSlide).Shapes.Count 
    Set oPPTShape = ActivePresentation.Slides(intSlide).Shapes(k) 
    oPPTShape.Export "C:\images\s" & k & ".bmp", ppShapeFormatBMP     
Next 

答えて

2

Wordに機能が存在しないため、PPT VBAからWord VBAにコピーしようとしているコードは機能しません。

Wordで図形を選択して右クリックすると、画像として保存する機能はありません(PPTでは機能があります)。 this pageからしかし

、あなたがやりたいVBAソリューションを建てMVPに著者のポイント:http://www.lebans.com/msword.htm

が、それはあなたがやりたいことを願っています、ここで

+1

Word VBAのオブジェクトモデルには、「エクスポート」機能が含まれていないため、Wordでは右クリックしてもファイルを保存することはできません。とにかく、あなたがリンクしたソリューションは、私が必要なものを正確に行いました、ありがとう! – Treb

1

は、(1つの汚れていますと最も速い)私は考えることができるトリック:

単語のドキュメントをWebページとして一時フォルダに保存します。

ActiveDocument.SaveAs FileName:="C:\Temp\Sample.htm", FileFormat:=wdFormatHTML, _ 
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ 
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
False 

ような何かワード文書内のすべての図形や写真が自動的にフォルダに保存されますCと呼ばれる:\ Tempに\ Sample_Files

あなたは、その後、単にそのフォルダいるすべてのファイルを削除します

は、このオプションを追求したい場合は、私に教えてください:)

シド

:)画像ではありません10

EDIT

私はちょうどそれが古いスレッドだと分かりました。うーん、このスレッドを編集する "Joel Coehoorn"に感謝します。LOLZ

0

これは解決策ではありませんが、古い問題に対する別のアプローチです。これまでは、ファイルを.HTMLに保存し、HTMLドキュメントのサブフォルダからイメージを取得する例や、ドキュメントアーカイブを抽出して抽出したセットからファイルを取得するコードを取得する例が多数ありました。

これはどう:文書のインライン形状による

  1. 反復Wordでなら。

    :各インライン形状に対して

  2. 。画像データをクリップボードにコピーします。 VBAのオブジェクトモデルを使用して取得したイメージの他のメタデータ はすでに取得済みです。

    b。たとえば、次のような最初のインラインシェイプの画像をコピーできます。

    ActiveDocument.InlineShapes(1).Range.CopyAsPicture 
    

    c。画像データがクリップボードにあるので、 をクリップボードから取り除くことが可能でなければなりません。私はVBAがこれを吸うことは知っていますが、あなたは Windows APIを使用して回避することができます。何らかの形でイメージデータを取得できる場合は、オブジェクトモデルから取得したメタデータを というファイルに書き込むことができます。

2

がEMF形式で各画像を出力し、これは、大きくないが、それは、個々のファイルにインライン形状コレクション内の画像のそれぞれを記述し。もちろん、他のシェイプコレクションを行うように変更することもできます。

私は直接JPGを書くことを強化したいと思いますが、今のところVBAが途中でWRITE出力をプッシュすることはわかりません。したがって、これらのファイルを使用するには、EMFからより有用なものにファイルを変換するために、いくつかの外部ポストプロセス/バッチを実行する必要があります。

Sub WriteInlineShapesToFile() 
    Dim docCurrent As Document 
    Dim shapeCurrent As InlineShape 
    Dim RC As Integer 
    Dim vData() As Byte 
    Dim i As Long 
    Dim lWritePos As Long 
    Dim strOutFileName As String 

    Set docCurrent = ActiveDocument 

    i = 1 

    For Each shapeCurrent In docCurrent.InlineShapes 
     strOutFileName = "c:\temp\datafile" & CStr(i) & ".emf" 
     Open strOutFileName For Binary Access Write As #1 
     i = i + 1 
     vData = shapeCurrent.Range.EnhMetaFileBits 
     lWritePos = 1 

     Put #1, lWritePos, vData 

     Close #1 

Next shapeCurrent 

    RC = MsgBox("Job complete.", vbOKOnly, "Job Status") 

End Sub 
関連する問題