Yin葉子 2023-10-10 22:10 采纳率: 33.3%
浏览 6

VBA使用位图句柄创建图片对象报错

我在使用VBA创建二维码的时候提示olepro32.dll文件未找到,我检查了我的windows文件夹下面是存在该文件的


Private Declare PtrSafe Function OleCreatePictureIndirect Lib "olepro32.dll" (lpPictDesc As PictDesc, riid As GUID, ByVal fPictureOwnsHandle As Long, IPic As IUnknown) As Long

Public Function BitmapToPicture(ByVal hBmp As Long, ByVal fPictureOwnsHandle As Long) As StdPicture
    If (hBmp = 0) Then Exit Function
    Dim oNewPic As IUnknown, tPicConv As PictDesc, IGuid As GUID
    With tPicConv
        .cbSizeOfStruct = Len(tPicConv)
        .picType = 1
        .hImage = hBmp
    End With
    With IGuid
        .Data4(0) = &HC0
        .Data4(7) = &H46
    End With
    OleCreatePictureIndirect tPicConv, IGuid, fPictureOwnsHandle, oNewPic
    Set BitmapToPicture = oNewPic
End Function

Sub 图片创建()
Dim Picture_obj As Object
    Picture_obj = BitmapToPicture("-821731954 ", 1)
End Sub

运行环境是Windows11 64位系统,Office 365 此段VBA代码在32位系统可以正常执行并创建一个图片对象

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-11 08:26
    关注

    【以下回答由 GPT 生成】

    问题分析:

    在64位系统上运行VBA代码时报告无法找到olepro32.dll文件的错误是因为该文件是32位DLL文件,无法在64位系统中被加载和调用。因此,需要找到适用于64位系统的DLL文件来替代olepro32.dll。

    解决方案:

    1. 从Windows系统文件夹复制oleaut32.dll文件到自定义的文件夹中。一般来说,oleaut32.dll文件位于"C:\Windows\System32"文件夹中。

    2. 使用VS命令行工具,将oleaut32.dll转换成64位DLL文件。打开VS命令行工具,运行以下命令: cd "自定义的文件夹路径" corflags oleaut32.dll /32BITREQ-

    3. 复制转换后的64位DLL文件(oleaut32.dll)到系统文件夹中。一般来说,系统文件夹是"C:\Windows\System32",但如果是64位系统,则应该复制到"C:\Windows\SysWOW64"文件夹中。

    4. 修改VBA代码中的DLL文件名称和路径,将原来的"olepro32.dll"替换为新的"oleaut32.dll"。修改后的VBA代码如下所示: vb Private Declare PtrSafe Function OleCreatePictureIndirect Lib "oleaut32.dll" (lpPictDesc As PictDesc, riid As GUID, ByVal fPictureOwnsHandle As Long, IPic As IUnknown) As Long

    5. 运行修改后的VBA代码,尝试创建图片对象。

    请注意,由于这只是一种尝试解决问题的方法,无法保证一定能够解决问题。如果问题仍然存在,可能需要进一步考虑其他解决方案或咨询相关领域的专业人士。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月10日

悬赏问题

  • ¥15 C++识别堆叠物体异常
  • ¥15 音量自动减小啦!日历自动翻页
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 如何在cst中建立这种螺旋扇叶结构
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?