PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   疑難雜症區 (https://www.pcdvd.com.tw/forumdisplay.php?f=34)
-   -   (問)Visual Basic for Application 7.0...支援UNICODE? (https://www.pcdvd.com.tw/showthread.php?t=954249)

rockjimmy 2012-01-01 10:20 PM

(問)Visual Basic for Application 7.0...支援UNICODE?
 
因為常常用excel的VBA作資料夾整理
資料夾中有部分是日文字
之前用win2003+office2003時有灌"Unicode 補完計畫"
所以使用時沒啥問題

最近改灌win7+office2010...
因為日文資料夾在WIN7都可以正常顯示,就沒有灌"Unicode 補完計畫"
但是....
使用同一個EXCEL VBA程式已經無法執行


VBA中都顯示????
有其他解決方法嗎?
還是一定要灌"Unicode 補完計畫"?

dmwc 2012-01-01 11:35 PM

補完計畫用了後,檔名就變成了 Big5 日文,建議就先找可以轉回來的軟體

Vista 以後已經不能再用補完計畫,這軟體也已經過時不適用了,這軟體雖然叫 Unicode補完計畫,但事實上和 Unicode 扯不上邊,應該叫 Big5補完計畫 才對

Lan-EVO 2012-01-02 12:03 AM

如樓上所言,Vista之後,Windows kernel都是unicode處理。
樓主會有這個問題,在於您的目錄名稱是BIG-5,所以處理上會出問題。
建議可先透過ConvertZ處理成unicode編碼後,再來試試您的VBA。

rockjimmy 2012-01-02 09:01 PM

先感謝大大們的回應嚕~~

>>>在於您的目錄名稱是BIG-5,所以處理上會出問題。
要如何知道資料夾是BIG5 or UNICODE?
剛剛上日文網站隨便複製一串日文
命名在新資料夾上
結果VBA遇到日文字也是?????

Lan-EVO 2012-01-03 12:25 AM

這個問題應該是Excel VBA會將取得的字串轉為ANSI再丟給Windows API處理的關係。
網路上有解決的方案,是呼叫unicode version的Win32 API。
您可以參考一下:
代碼:
Private Declare Function Curt_Directory Lib "kernel32" Alias

rockjimmy 2012-01-03 10:11 PM

引用:
作者Lan-EVO
這個問題應該是Excel VBA會將取得的字串轉為ANSI再丟給Windows API處理的關係。
網路上有解決的方案,是呼叫unicode version的Win32 API。
您可以參考一下:Private Declare Function Curt_Directory Lib "kernel32" Alias


>>>網路上有解決的方案,是呼叫unicode version的Win32 API。
假如unicode字串"市場の商品"---塞到A
A的內容就變成"市場?商品"

L大不好意思...小弟算是半路出家無法了解"呼叫"這意思
可否麻煩L大給個大概方向,示範一小段"呼叫unicode version的Win32 API"
先感恩了@@a...

==L大說的是下面這東西嗎@@?==
Declare 陳述式加上 PtrSafe 關鍵字是建議使用的語法。只有當 Declare 陳述式中需要儲存 64 位元數量的所有資料類型 (參數和傳回值) 都更新為在 64 位元整數情況下使用 LongLong,或者在指標和控制代碼情況下使用 LongPtr 時,包含 PtrSafe 的 Declare 陳述式在 32 位元和 64 位元平台的 VBA7 開發環境中才能正確運作。若要確保和 VBA 6 版及先前版本的回溯相容性,請使用下面結構:

#If Vba7 Then
Declare PtrSafe Sub...
#Else
Declare Sub...
#EndIf


所有的時間均為GMT +8。 現在的時間是03:56 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。