2016-03-23 6 views
0

私は、Word文書をXMLに変換するためのスクリプトを書いています。 Word文書が一貫してスタイルされている限り、すべてが完全に機能します。スクリプトが処理できないものの1つは、イメージがOLEオブジェクトとして挿入されるときです。これらのイメージはスクリプトによって単純に無視されますが、OLE以外のオブジェクトとして定期的に挿入されたイメージは、スクリプトによってうまく取り込まれます。VBAを使用してWordのOLEオブジェクトからイメージデータを取得できますか?

私はまた、変換する前にドキュメントをクリーンアップするために、VBAスクリプト(下記参照)を使用しています。スクリプトは、ドキュメントにスタイルを追加し、いくつかのものを移動し、...私はそれを行うようにしようとしているのは、OLEイメージを非OLEイメージに変換することです。

私が知りたいのは、ドキュメント内のinlineShapesを繰り返してOLEグラフィックスを通常のグラフィックスに変換する方法があるか、OLEオブジェクトからイメージデータを取り出して貼り付ける方法ですドキュメントにPNG形式で挿入します。

これは私の VBAスクリプトが今何をするか次のとおりです。

Sub docscrubber() 

Dim i As Integer 
Dim total As Integer 
Dim oIshp As InlineShape 

total = ActiveDocument.InlineShapes.Count 
i = 0 
For Each oIshp In ActiveDocument.InlineShapes 
    i = i + 1 
    On Error Resume Next 
    Application.StatusBar = "Progress: " & i & " of " & total 
     With oIshp 

     oIshp.Range.Copy 
     oIshp.Select 
     Selection.Paste 

     End With 
Next oIshp 

End Sub 

代わりに画像データを取得し、私は、ドキュメントのコードを取得します。

ありがとうございます!

答えて

1

私は、OLEサーバーがこれらにリンクされているかわからない、と多分...しかし、私は決定的なテストを行うことができない、というWordで

OLEオブジェクトを持っていないので、動的情報と同様に、フィールドコードによって管理されます。 Alt + F9を使用して、フィールドコードの表示をオンまたはオフに切り替えることができます。私がテストしたフォーマットでは、これらはEMBEDフィールドでした。

フィールドコンテンツを静的コンテンツ(OLEオブジェクトをグラフィック表現に変換)にするには、フィールドのリンクを解除するだけで十分です。表示されたコードに基づいて、このようなものがあるようです:

For Each oIshp In ActiveDocument.InlineShapes 
    i = i + 1 
    'On Error Resume Next ' do NOT use this! 
    Application.StatusBar = "Progress: " & i & " of " & total 
    With oIshp 
     If oIshp.Range.Fields.Count = 1 Then 
     oIshp.Range.Fields.Unlink 
     End If 
    End With 
Next oIshp 
関連する問題