VBA 6.0和VBA 7.0有什么区别?
我注意到Office 2010带有Visual Basic for Applications 7.0。 但是,我似乎无法find有关更改的文件。 有没有人有变化的总结,或任何资源描述差异?
VBA6和VBA7之间并没有太多变化。 引入VBA7是为了支持Office和Windows的64位版本(请参阅以下有关这些差异的内容)。 以下是关键的变化:
- 
64位支持,主要用于API调用 。 这是用来使您的代码与您的OS / Office版本以及其他人(即在Office 2003 / WinXP上的人) - 
如果您使用的是64位版本的Windows,但使用的是32位版本的Office,则可以声明如下所示的API调用。 。 #如果Win64那么 声明PtrSafe函数GetTickCount64 Lib“kernel32”()As LongLong #其他 声明PtrSafe函数GetTickCount Lib“kernel32”()As Long #万一
- 
如果您使用的是64位版本的Windows, 并且位于64位版本的Office上,则可以声明API调用,如:。 #如果VBA7那么 声明PtrSafe函数FindWindow Lib“user32”别名“FindWindowA”(_ ByVal lpClassName As String,_ ByVal lpWindowName As String)As LongPtr #其他 声明函数FindWindow Lib“user32”别名“FindWindowA”(ByVal _ lpClassName As String,ByVal lpWindowName As String)As Long #万一
 
- 
- 
为了支持这个,有: - 
三个新的关键字 (2个数据types和1个修饰符): LongPtr,LongLong和PtrSafe
- 
一个新的函数 : CLngLng()(即Int64)
- 
上面使用的新编译常量 : VBA7和Win64
 
- 
MSDN上的这篇文章更多地介绍了Office 2010的VBA 7中的更改:
http://msdn.microsoft.com/en-us/library/ee691831(loband).aspx#odc_office2010_Compatibility32bit64bit_IntroducingVBA7CodeBase
VBA7与64位版本的Office兼容。
还有其他的变化…我有在现场报告中的用户在2007年正常运行的代码不再工作,并显示错误。
例如,这在VBA6( Excel 2007 )
 PRINT STRING$(80,"=") mynewdata = MID$(mydata, 15,4) 
它打印出由“ = ”字符组成的行作为视觉中断,然后查看mydata ,跳过15个字符并获取4 个字符,结果存储在mynewdata中 。 它在VBA7( Excel 2010 )中失败。
我find了一个潜在的解决方法…
 PRINT VBA.STRING$(80,"=") mynewdata = VBA.MID$(mydata, 15,4) 
要么
 PRINT VBA.STRING(80,"=") mynewdata = VBA.MID(mydata, 15,4) 
一个完整的更改列表将仍然有帮助…和/或文件转换器。