小编use*_*957的帖子

Excel VBA代码:x64版本中的编译错误(需要'PtrSafe'属性)

我使用的是Win8 x64 + Office 2013 x64.

我的问题:

我有一个excel文件,其中包含一些模块,并在Office(Excel)x86中完美运行.它使用Swiss Ephemeris文件(swedll32.dll)进行大量的天文计算.

但是,当我尝试在Excel x64上运行它时,ASAP它已打开,VBA编辑器启动并给我以下错误:

Compile error:
The code in this project must be updated for use on 64-bit systems.
Please review and update Declare statements and then mark them with the PtrSafe attribute.
Run Code Online (Sandbox Code Playgroud)

正如我上面所说,它只适用于32位办公室(Excel),但它不能在我的x64 Excel中工作但是似乎有一个解决方法,但我太过新手了.

我不喜欢VBA,但是,在通过互联网挖掘后,一些网站建议对于64位办公室(Excel),我们应该修改(对于每个声明)代码到这样的:

  • 原始声明:私人声明功能
  • 修订声明:私人声明PtrSafe功能

不幸的是,在各处添加' PtrSafe ' 之后,尽管VBA错误已停止,但未在单元格中正确显示/计算值.

从微软VBA的64位帖子来看,似乎我们还需要修改一些数据类型,例如:

  • 长 ?至 ?LongPtr
  • LongPtr?至 ?龙龙
  • 一些"长"应该保持不变,这取决于他们做什么.

这个网站(在"Who Longs应该成为LongPtr?"下)提供了一个线索,关于如何知道要修改哪一个.

我不明白它的事情,并且不知道应该做些什么才能在Office(Excel)x64中完成这项工作.对此非常擅长的人,请帮助我.请.

注意:

  • 只有以红色显示的声明表示它们包含错误才被转储到此处.其余部分代码未粘贴在此处,因为它们看起来很好(绿色).
  • 要使Excel文件在您的计算机上正常工作,请确保在解压缩后,"swedll32.dll"和"JCalc Ver 0.2d.xls"位于同一文件夹中.

模块名称中的问题:MainCalculations

'Swiss Ephemeris Release 1.60  9-jan-2000
'
' Declarations for …
Run Code Online (Sandbox Code Playgroud)

excel 64-bit vba runtime

25
推荐指数
2
解决办法
10万
查看次数

标签 统计

64-bit ×1

excel ×1

runtime ×1

vba ×1