2010-11-22 48 views
3

當我們遷移到Office 2010-64位版本時,我觀察到下面的函數調用有問題。如何使VBA代碼與Office 2010兼容 - 64位版本和較舊的Office版本

Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 

根據http://msdn.microsoft.com/en-us/library/ee691831.aspx鏈接提供的信息。我已經改變了上面的呼叫,並且它在Office 2010 64位版本上工作正常。

Private Declare PtrSafe Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 

的問題是,我需要做相同的呼叫工作在較舊的Office版本,以及和它拋出舊版本的編譯錯誤。

有沒有人有任何想法如何使這個電話工作的辦公室2010年和較舊的辦公版本。

+1

對於您的信息:Microsoft建議不要使用64位版本的Office出於兼容性原因。如果您需要處理非常大的文檔(Excel電子表格),則只能使用它。 – 2010-11-22 23:14:36

+1

@ 0xA3這似乎並不是確切的引用:http://technet.microsoft.com/en-us/library/ee681792.aspx,yesno? – Fionnuala 2010-11-22 23:32:20

回答

7

正如MSDN文章所述,使用條件編譯:它適用於Excel 97至Excel 2010 32位& 64位。

#If VBA7 Then 
Private Declare PtrSafe Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 
#Else 
Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) 
#End if 
相關問題