[VBA] Office 2013 x64 以後版本呼叫 Windows API 要加關鍵字 PtrSafe

工作上有一個很少用的工具 Excel 巨集,裡面放了一堆 API ,是以前寫的。

這兩天臨時要用到,用 Excel 開起來後,一片滿江紅,下面的圖檔是我處理完後加個測試行做出來的,檔案就跟第一行一樣,宣告區全是紅的。

Office 2013 VBA 版本

Office 2013 VBA 版本

從版權畫面可以看到,VBA 7.1 的大版本懸掛在那。

滿江紅是看不出來要改啥,所以上網查半天,詳細說明請參考 MSDN 線上手冊:

Delare 陳述式 https://msdn.microsoft.com/zh-tw/library/office/gg278581.aspx

搞定後才發現,重新輸入程式碼,換行時,VBA 程式碼自動檢查就會提醒你,在 Office x64 下,要加 PtrSafe :

自動提醒要加 PtrSafe

自動提醒要加 PtrSafe

可以比對 [錯誤] / [視窗] 兩行宣告,就只差在 PtrSafe ,錯誤那行沒有輸入 PtrSafe 就會跳錯。

所以也可以推知,舊版本的 VBA 在 x64 下,若有呼叫到 Windows API 都須修改宣告,否則根本不能跑,可能非微軟的協力廠商,例如 AutoCAD 也受此影響。

當然又回到那句老話,這樣看來,微軟十年前根本是騙大家的,VB6 要上到 x64 還是有很多解法,就看微軟願不願意而已,因為在 Office 中已經解決了阿~

微軟不再支援 VB6 的理由,又消滅了一個…

Categories: Office, 技術分享 | Tags: , , , , , , , | 發表留言

文章導覽

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: