【问题标题】:cannot recognize excel-VBA object after upgrade excel version升级excel版本后无法识别excel-VBA对象
【发布时间】:2016-10-22 18:16:12
【问题描述】:

从excel 2010 32位升级到64位后,我在新版本中创建的所有对象都无法被其他使用excel 2010 32位的计算机识别,我已经尝试插入这个:

If VBA7 = True Then
 ' 32 Bit API
Private Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPtr
Private Declare PtrSafe Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As LongPtr, lpExitCode As Long) As Long
Else ' 64 bit API
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
End If

它不工作。

请帮助:)

【问题讨论】:

  • 您期望得到什么样的帮助?
  • 我希望能够在 32 位和 64 位 excel 中使用该文件

标签: vba excel 32bit-64bit


【解决方案1】:

这不是正确的条件编译。它应该是这样的:

#If VBA7 Then
    ' 64 Bit API
    Private Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPtr
    Private Declare PtrSafe Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As LongPtr, lpExitCode As Long) As Long
#Else    ' 32 bit API
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
#End If

【讨论】:

  • 我试了一下它不起作用...,也许我没有使用它对吗?我需要在哪里过去?
  • “它不工作”是什么意思?会发生什么?
  • 我点击按钮所以没有发生任何事情,如果我进入设计模式并点击按钮上的 duble,那么创建的新方法就是一个新名称
  • 该代码与按钮无关。这是 Windows API 调用。
  • 我只能回答我看到的。听起来您根本没有将代码连接到按钮。如果您在工作表上使用 ActiveX 控件,则可能会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
相关资源
最近更新 更多