JeffHung.Blog

(My smile insists of having nose. :-)

Save current visio page as PNG and SVG files using VBA

為了要在 OpenOffice.org2 裡用 Visio 畫出來的圖,我總是得先在 Visio 裡 save as 成 PNG 格式,然後再在 OpenOffice.org2 的 writer 裡插入並設定連結。由於要不斷地在 Visio 與 OpenOffice.org2 之間修改,所以每次都要另外設定存檔格式,十分麻煩。所以簡單地寫了個 VBA,簡化這個步驟:

將目前正在編輯的 Visio 檔案的目前頁面,以目前檔名去掉延伸檔名的部分,存檔成 PNG 格式的圖檔 (當然要再加上 .png 副檔名)。
理想上,透過 SVG 格式會更好。但是因為目前 OpenOffice.org2 對 SVG 的支援,只有一個半官方的 XML filter 叫 SVG Import Filter for OpenOffice 2.0 勉強可以用,所以暫時還是在 Visio 裡同時存檔成 PNG 與 SVG 檔,先用 PNG,以後有機會再用 SVG。

用 macro [...]

Calling VC-made DLL from VB

記錄一下從 VB 呼叫用 VC 製作的 DLL 的心得:
1. 使用 __stdcall 搭配 .def 檔製作 DLL VC 製作 DLL 的方法。
有兩種方法。
第一種方法是使用 __declspec(dllexport) 宣告要 export 的函式,讓 VC 幫忙製作 stub library,這時預設使用的 calling convension 是 __cdecl。這樣宣告後,VC 會產出 libFoo.dll 與 libFoo.lib 兩個檔案,其中後者就是所謂的 stub library,VC 會自動於 stub library 裡製作對應到 libFoo.dll 裡 _funcFoo 這個 symbol 的 __imp_funcFoo。
這個方法的好處是,在 VC 裡的 project 有 dependency 時,會自動 [...]

Bugs: Error 53 when calling functions from custom DLL

用 VB6 呼叫用 VC6 寫的 DLL,檔案確實有更新且擺放在 VB 的 project 目錄下了,函式也確實地用 __stdcall 與 def 檔宣告了,但就是會跑出
Error 53: File not found libFoo.dll

的訊息。
後來查到《Bugs: Error 53 when calling functions from custom DLL》這個網頁才知道,是 libFoo.dll 所需要的 libBar.dll 忘了複製過來的緣故。 不過,這什麼鳥蛋 error message 啊,一點提示效果都沒有,難怪查到的網頁要用 Bugs 開頭。
看了一下 MSDN 裡 VB6 的 error code 列表,少的可憐。寫 VB 真的要自求多福才行。