2012-05-12 13 views
2

私はWord 2010で作業しており、しばらくの間は方程式エディタを使用していました。Microsoft Wordの方程式を画像として保存するマクロですか?

ドキュメントとして選択したコンテンツをイメージとして保存するマクロを作成します。 私はそれを使用して、書類に書いた方程式を絵として抽出し、いくつかのフリーイメージサイトに公開して公開したいと考えています。

でも、式の代わりに文書の大部分を抽出することができればさらに便利です(方程式を抽出すると今は私を満足させることができます)。

Excelにはコンテンツをイメージとしてコピーするための組み込みオプションがあり、必要な場所に貼り付けることができます。何らかの理由でWordにはその機能がありません。

これは外部の非組み込みVBAコードが含まれていても、とにかくやりたい方法を探しています。しかし、私はそれらの画像で作業することができ、それらと一緒に他のものをやることができるように(例えば、私はいくつかの画像サイトにそれらを自動的にアップロードすると言ったように)vbaと統合する必要があります。

私はこの質問を投稿する前にいくつかの調査を行いましたが、問題の解決策が見つかりませんでした。

あなたの助けに感謝します!

+0

あなたは* *ラテックスへの切り替えを検討しましたか?これは方程式(およびタイプセット)にも非常に適しています...そして、あなたは画像として方程式を抽出することができます(HeVeAを参照してください) –

+0

私は選択肢を知っていますが、ラテックスは私の言語を完全にサポートしません - ヘブライ語、私は方程式にヘブライ語と英語をミックスしており、それが完全に抑制されることが重要です。また、私はすでに数式エディタの言葉に慣れていますが、私はすべてのショートカットに精通しています。ラテックスよりもはるかに直感的です。 – rboy

+0

@ RB14、拡張および修正されました。 – Ben

答えて

0

VBAを使用して項目を選択し、「コピー」を実行してからクリップボード機能を使用してデータを取得し、ファイルに保存する必要があります。残念ながら、それは私に属していないので、完全なコードを投稿することはできません。

配列である:

  • OpenClipboard
  • GetClipboardData(戻り値がクリップボードフォーマットに依存する。)は、GDIメタファイルオブジェクトへのハンドルである
    • CF_ENHMETAFILE。 CopyMetaFileを使用してファイルに保存できます。この場合、GlobalLockを使用する必要はありません。
    • CF_TEXTは、それはBITMAPINFOを含むHGLOBLAあるHGLOBAL
    • CF_DIBある - ファイル
  • CopyEnhMetafile 又は GlobalSize、GlobalLock、CopyMemory、GlobalUnlockにコピーすることができます。
  • CloseClipboard

    プライベート宣言機能Win32GetClipboardDataのLib "kernel32の" エイリアス "GetClipboardData" あなたはGlobalSize、GlobalLockを使用することができます

  • それはHGLOBALを返し

、限り(ロングとしてByVal lClipboardFormat)、 CopyMemoryを使用してBSTRまたはByte()オブジェクトにコピーし、ADODB.Streamを使用してデータをファイルに保存します。 、次にGlobalUnlockをクリーンアップします。私はそれがクリップボードに属していると思いますので、GlobalFreeは使用しないでください。

私が知っている多くの仕事のようですね!に\コピーはパス」、SaveClipboardData CF_ENHMETAFILE

    • は、オブジェクト
    • を選択:

      Sub SaveClipboardData(ByVal lFormat, ByVal sFileName) 
      

      そして、あなたが言うことができるようになります。しかし、一度あなたがこのような単純な機能を持つことになります行われ\ file.emf "

    Ta-Dah!

    あなたはBMP(CF_DIB)またはEMFとして非常に簡単に保存でき、ImageMagickは必要なものに変換できます。 EMFはベクター形式で、最高の解像度を得るためにはPNG形式に変換することをお勧めします。

    これを少なくとも2回実行するコードを書いてあります。それは難しいことではありませんが、機能シグネチャを正しく取得する必要があります。いくつかの助けのためにここを参照してください:

  • +0

    はこれまでの答えが最高だと思われますが、おそらく私が欲しいのは確かです。私は間違いなくそれを調べます。ありがとう! – rboy

    関連する問題