2012-05-12 30 views
2

我正在使用Word 2010,並且現在一直在使用公式編輯器。宏將Microsoft Word公式保存爲圖像?

我想寫一個宏,將選定的內容保存在文檔中,作爲圖像。 我想使用它來提取我在文檔中編寫的公式,如圖片,然後將它們上傳到某些免費圖像網站進行發佈。如果我能夠提取文檔的大部分,而不僅僅是方程(即使提取方程式現在能滿足我),它將會更加有用。

在Excel中,內置選項可將內容複製爲圖像,然後將其粘貼到任意位置。但由於某種原因,Word沒有這種能力。

無論如何,我正在尋找一種方法,即使這會涉及一些外部非內置vba代碼。但它應該與vba集成,所以我可以處理這些圖像,並與他們一起做其他事情(比如我說的 - 例如將它們自動上傳到一些圖像網站)。

我發表了這個問題之前做了一些研究,我找不到任何工作解決方案的問題。

感謝您的幫助!

+0

你有沒有考慮切換到* LaTeX的*?這對方程式非常有用(也適用於排版!)...並且您可以將方程式提取爲圖像(請參閱HeVeA) –

+0

我知道替代方案,但乳膠不能完全支持我的語言 - 希伯來語,還有一些時間我在方程中混合了希伯來語和英語,重要的是它會被完全支持。另外,我已經習慣了方程式編輯器,並且我熟悉所有快捷方式,它比乳膠更直觀,現在對我的需求更好。 – rboy

+0

@ RB14,展開並更正。 – Ben

回答

0

基本上你需要使用VBA來選擇項目,執行「複製」,然後使用剪貼板功能來檢索數據並將其保存到文件中。不幸的是,我不能發佈完整的代碼,因爲它不屬於我。

的序列是:

  • OpenClipboard
  • GetClipboardData(返回值取決於剪貼板格式。)
    • CF_ENHMETAFILE它的句柄GDI圖元文件對象。您可以使用CopyMetaFile將其保存到文件中。在這種情況下,您不必使用GlobalLock。
    • CF_TEXT它是一個HGLOBAL
    • CF_DIB它是含有一個BITMAPINFO HGLOBLA - 可以被複制到文件
  • CopyEnhMetafile GlobalSize,GlobalLock,CopyMemory的,GlobalUnlock。
  • CloseClipboard

    私人聲明函數Win32GetClipboardData庫 「的Kernel32」 別名 「GetClipboardData」(BYVAL lClipboardFormat長),只要

當它返回一個HGLOBAL,然後你可以使用GlobalSize,GlobalLock, CopyMemory將其複製到BSTR或Byte()對象,然後使用ADODB.Stream將數據保存到文件。 ,然後和GlobalUnlock進行清理。我認爲它屬於剪貼板,所以你不應該使用GlobalFree。

似乎很多工作我知道!但是一旦做了,你將有一個簡單的函數是這樣的:

Sub SaveClipboardData(ByVal lFormat, ByVal sFileName) 

而你,也就能夠說:

  • 選擇對象
  • 複製
  • SaveClipboardData CF_ENHMETAFILE,「路徑\至\ file.emf「

Ta-Dah!

您將能夠非常容易地保存爲BMP(CF_DIB)或EMF,並且ImageMagick可以將它們轉換爲任何您想要的東西。我會建議使用EMF,因爲它是一種矢量格式,並轉換爲PNG以獲得最佳分辨率。

我已經編寫了代碼來做到這一點至少兩次 - 這並不難,但你必須得到正確的功能簽名。看到這裏的一些幫助:

+0

似乎是迄今爲止最好的答案,可能正是我想要的:)我一定會考慮它,而且我可能會很好地設置一切。謝謝! – rboy