Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 综合其它

Microsoft Visual Basic for Applications编译错误:若要在64位系统上使用,则必须更新此项目中的代码。请检查并更新Declare语句,然后用PtrSafe属性标记它们的解决方法2

时 间:2018-07-19 14:15:07
作 者:麥田   ID:11  城市:上海  QQ:3002789054点击这里给麥田发消息
摘 要:Microsoft Visual Basic for Applications编译错误:若要在64位系统上使用,则必须更新此项目中的代码。请检查并更新Declare语句,然后用PtrSafe属性标记它们的解决方法2
正 文:

一、网友问题描述
yeatsyu(848268098) 10:53:41
请教这个编译错误如何解决,提示:
Microsoft Visual Basic for Applications编译错误 若要在64位系统上使用,则必须更新此项目中的代码。请检查并更新Declare语句,然后用PtrSafe属性标记它们
如下图:


点击确定后,提示如下:
点击图片查看大图

二、解决方案
Accessoft-麥田(2851379731) 10:54:21
任意新建一个模块,把下面代码全部拷贝到模块代码里面,注意是替换模块里面原有的代码。

Option Compare Database

'API函数声明
#If VBA7 Then
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongPtr) As LongPtr
Public Declare PtrSafe Function SetCursor Lib "user32" (ByVal hCursor As LongPtr) As LongPtr
Public Declare PtrSafe Function LoadCursorByNum Lib "user32" Alias "LoadCursorA" (ByVal hInstance As LongPtr, ByVal lpCursorName As LongPtr) As LongPtr
#Else
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongPtr) As LongPtr
Public Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Public Declare Function LoadCursorByNum Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
#End If
Public Const IDC_HAND = 32649&          '手形
Public Const IDC_APPSTARTING = 32650&   '系统忙
Public Const IDC_ARROW = 32512&         '常规箭头形
Public Const IDC_CROSS = 32515&         '十字形
Public Const IDC_IBEAM = 32513&         '文本插入
Public Const IDC_ICON = 32641&          '使用指定光标文件
Public Const IDC_NO = 32648&            '不可用
Public Const IDC_SIZE = 32640&          '隐藏指针
Public Const IDC_SIZEALL = 32646&       '选中并移动
Public Const IDC_SIZENESW = 32643&      '左下角右上角大小调整
Public Const IDC_SIZENS = 32645&        '上下调整
Public Const IDC_SIZENWSE = 32642&      '左上角右下角大小调整
Public Const IDC_SIZEWE = 32644&        '左右调整
Public Const IDC_UPARROW = 32516&       '上箭头
Public Const IDC_WAIT = 32514&          '沙漏
'改变光标指针调用示例: SetCursor LoadCursorByNum(0,32649)
'                       SetCursor LoadCursorByNum(0, IDC_HAND)

'ShellExecute函数二次封装,以简化使用
'输入参数File可以是文件名,网页地址或命令行
Public Function ShellEx(File As String)
    ShellExecute hWndAccessApp, "Open", File, 0, 0, 1
End Function

粘贴好代码后然后保存一下,默认给模块命名就可以了。

yeatsyu(848268098) 10:59:38
好了,谢谢!
是什么原因?

Accessoft-麥田(2851379731) 10:54:21
是因为你的这个程序本身是在32位Office Access环境下编写的,现在换成64位Office Access,要把对应的代码也改一下才能支持64的Access环境。

好了,今天的姿势就涨到这里,小伙伴咱们下次再见。


Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助