2014-10-05 122 views
0

我得到一個錯誤,我的代碼需要更新Office 64位系統。我無法理解需要進行哪些更改,因爲這在Office 32位上可以正常工作。VBA代碼64位系統

Private Declare Function GetTimeZoneInformationAny Lib "kernel32" Alias _ 
    "GetTimeZoneInformation" (buffer As Any) As Long 
+1

錯誤說的是什麼? – SLaks 2014-10-05 02:18:26

+0

請參閱[MSDN](http://msdn.microsoft.com/en-us/library/office/ee691831%28v=office.14%29.aspx#odc_office2010_Compatibility32bit64bit_Comparing32BitSystemsto64BitSystems)和[JKP](http://www.jkp -ads.com/articles/apideclarations.asp) – 2014-10-05 03:18:38

+0

好的謝謝,但我很困惑。我應該使用VBA7還是Win64屬性? – 2014-10-05 17:05:03

回答

2

我讀過了提供的指導方針。我認爲像這樣宣佈PtrSafe應該這樣做?

Private Declare PtrSafe Function GetTimeZoneInformationAny Lib "kernel32" Alias _ 
    "GetTimeZoneInformation" (buffer As Any) As Long 
-1

32位系統和64位函數中的Windows API函數是不同的。

請嘗試下面的代碼。

#If Win64 Then 
    Private Declare Function GetTimeZoneInformationAny64 Lib "kernel32" Alias _ 
     "GetTimeZoneInformation" (buffer As Any) As Long 
#Else 
    Private Declare Function GetTimeZoneInformationAny Lib "kernel32" Alias _ 
     "GetTimeZoneInformation" (buffer As Any) As Long 
#End If 

如果辦公系統是以64位模式編譯的話,Win64將會被刪除,否則它不會被刪除。

通過使用Win64來確定系統是64位還是32位,您可以使用適合您的辦公系統的功能。