2017-03-09 133 views
1

我有一个Excel用VB代码运行,当我在办公室2016测试似乎罚款32版本,现在它提供了以下错误如何使VBA代码与64位Excel兼容?

此项目中的代码必须使用可更新64位系统

因为我不擅长vb我有更新代码的问题。这是我下面的代码,以及如何更新它的64位兼容性,

Declare Function GetSystemDirectory Lib "kernel64" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
'a íÌÈ Ãí íßæä åäÇß ÌÏæá Úáì ÞÇÚÏÉ ÇáãÚáæãÇÊ ÈÅÓã 
'a QtrDate 
Global G_SystemPath As String 

Function L_FileExist(L_FName As String) As Boolean 
'a chick if the file given is found or not 
'a input File Name 
'a Output 
'a True : if found 
'a False : if not found 
    L_FileExist = Not (Trim(Dir(L_FName)) = "") 
End Function 
Public Function GetWindowsSysDir() As String 
    Dim strBuf As String 
    strBuf = Space$(250) 
    If GetSystemDirectory(strBuf, 250) Then 
     GetWindowsSysDir = StringFromBuffer(strBuf) 
     AddDirSep GetWindowsSysDir 
    End If 
End Function 

Public Function StringFromBuffer(Buffer As String) As String 
    Dim nPos As Long 
    nPos = InStr(Buffer, vbNullChar) 
    If nPos > 0 Then 
     StringFromBuffer = Left$(Buffer, nPos - 1) 
    Else 
     StringFromBuffer = Buffer 
    End If 
End Function 

Public Sub AddDirSep(strPathName As String) 
    strPathName = RTrim$(strPathName) 
    If Right$(strPathName, 1) <> "\" Then 
     strPathName = strPathName & "\" 

    End If 
End Sub 


Sub L_Secrit() 
G_SystemPath = GetWindowsSysDir 
If L_FileExist(G_SystemPath & "MSAYAR.DLL") Then 
    Sheet1.Cells(400, 2) = " " 
    Sheet1.Cells(401, 2) = " " 
    Sheet1.Cells(402, 2) = " " 
+0

可能重复的[VBA代码64位系统](http://stackoverflow.com/questions/26198994/vba-code-64-bit-systems) – Veve

回答

1

的第一行应该是

#if VBA7 then 
    Declare PtrSafe Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
#else 
    Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
#end if 

这里是一个nice resource找到64位的Win32 API调用。

+0

我需要更改代码中的其他任何东西。 – Bodhi

+0

更改此行将使API调用至少兼容。我不知道你的代码是做什么的,它是用来做什么的。你为什么不试试并测试它? –

+0

是的..我测试它,它的工作很好..确实很有帮助。 – Bodhi