向 Visual Studio 2005 Tools for Office 迁移时,将 VBA 代码转换为 Visual Basic .NET(摘自MSDN)

本文探讨将VBA代码迁移到Visual Studio 2005 Tools for Office时遇到的问题,包括开发效率提升、安全模型改进、部署灵活性增加等优点。介绍了数据类型、文本值、枚举、数组等方面的转换差异,并提供了代码示例。迁移VBA项目以利用.NET Framework的功能和Visual Studio 2005的集成开发环境。
摘要由CSDN通过智能技术生成

向 Visual Studio 2005 Tools for Office 迁移时,将 VBA 代码转换为 Visual Basic .NET

发布日期: 7/7/2005 | 更新日期: 7/7/2005

Dale Oberg
ArtinSoft.com

适用于:
Microsoft Visual Studio 2005
Microsoft Visual Studio 2005 Tools for the Microsoft Office System
Microsoft Visual Basic .NET
Microsoft Visual Basic for Applications
Microsoft Office 2003 Editions
Microsoft Office Excel 2003
Microsoft Office Word 2003

摘要:向 Microsoft Visual Studio 2005 Tools for the Microsoft Office System 迁移时,将代码从 Visual Basic for Applications 转换为 Visual Basic .NET。本文档重点说明迁移原因、主要的代码转换问题,以及有关进一步详细信息的其他资源。

本文是预发布文档,所描述内容在将来的版本中有可能会更改。Microsoft Visual Studio 2005 Tools for the Microsoft Office System 的 Beta 版包含在 Microsoft Visual Studio 2005 的 Beta 版之中。

*
本页内容
Visual Studio 2005 Tools for Office 简介 Visual Studio 2005 Tools for Office 简介
为什么要迁移到 Visual Studio 2005 Tools for Office? 为什么要迁移到 Visual Studio 2005 Tools for Office?
将 VBA 代码转换为 Visual Studio 2005 Tools for Office 中的 Visual Basic .NET 代码 将 VBA 代码转换为 Visual Studio 2005 Tools for Office 中的 Visual Basic .NET 代码
小结 小结
其他资源 其他资源
关于作者 关于作者

Visual Studio 2005 Tools for Office 简介

Microsoft Visual Basic for Applications (VBA) 是已经使用多年的 Microsoft Office 应用程序的环境和语言。Microsoft Office 2003 Editions 包括一个用于构建应用程序的新环境,称为 Microsoft Visual Studio Tools for Office(Visual Studio Toolsfor Office),它基于 Microsoft .NET Framework。

与 VBA 相比,Microsoft Visual Studio Tools for the Microsoft Office System 2003 版具有更多优势,而 Microsoft Visual Studio 2005 Tools for the Microsoft Office System 增强了这些功能,从而提高用户的工作效率。

本文探究将 VBA 代码迁移到 Microsoft Visual Basic .NET 和 Visual Studio 2005 Tools for Office 时需要解决的各种编码问题。本系列的后续文章会重点介绍如何将全部项目从 VBA 迁移到 Visual Studio 2005 Tools for Office,还会讨论为了充分利用 Visual Studio 2005 Tools for Office 应该为 VBA 项目考虑的体系结构问题。

为什么要迁移到 Visual Studio 2005 Tools for Office?

从 VBA 迁移到 Visual Studio 2005 Tools for Office 可以使您获得许多好处,例如:

提高了开发效率。从 VBA 迁移到 Visual Studio 2005 Tools for Office 的一个原因是可以访问 Visual Studio 2005 Tools for Office 和 Microsoft Visual Studio 2005 之间的集成开发环境。Visual Studio 是最丰富、最成熟的可用开发环境之一,它可以提高编码和测试的效率。

改进了安全模型。内置于公共语言运行库 (CLR) 中的安全模型有助于托管解决方案的实施。

可以更轻松地进行部署和版本控制。托管解决方案允许更灵活的部署选项,以及简化的部署和更新。

添加了来自 Microsoft .NET Framework 的功能。对 CLR 基类库的访问使您能够利用其新功能,例如 XML 读取器、ADO.NET 以及 Web 服务的简化使用。

提高了代码重用率。Visual Basic .NET 是一种完全面向对象的语言,有助于代码重用。

可以更轻松地进行集成。通过 Web 服务,.NET Framework 促进了与其他应用程序的集成。

将 VBA 代码转换为 Visual Studio 2005 Tools for Office 中的 Visual Basic .NET 代码

下面列出了 VBA代码和 Visual Studio 2005 Tools for Office 中的 Visual Basic .NET 代码之间的部分差异。

数据类型

在 Visual Basic .NET 中,某些数据类型(如 VariantIntegerLongCurrency 以及其他类型)已经更改或过时。例如,VBA 中的 Integer 等效于 Visual Basic .NET 中的 Short。另外,VBA 中的 Long 等效于 Visual Basic .NET 中的 Integer

固定长度字符串

由于更改后允许 Visual Basic .NET 数组和结构(先前称为用户定义类型)完全兼容其他 Visual Studio 语言,因此固定长度字符串在该语言中不再受支持。如果固定长度字符串不需要确切长度,则可以将其转换为常规的 Visual Basic .NET String,如以下代码所示。

' VBAcode
Dim MyFixedLengthString As String * 100

' Visual Basic .NETcode
Dim MyFixedLengthString As String

然而,如果固定长度字符串必须是特定的字节长度,则可以将其转换为字节数组,如以下代码所示。

' Visual Basic .NETcode
Dim MyFixedLengthString(100) As Byte

文本值取代 Windows 常量

如果您使用文本值取代基于 Microsoft Windows 的已定义常量,则在向 Visual Studio 2005 Tools for Office 迁移时必须执行更多的工作。在使用文本值的情况下,您必须确定基于 Windows 的常量,然后再使用基于 Visual Studio 2005 Tools for Office 的等效常量。例如:

' VBAcode
btnRecalculate.MousePointer = 10  ' This is the literal constant for vbUpArrow

' Visual Basic .NETcode
btnRecalculate.Cursor = System.Windows.Forms.Cursors.UpArrow

枚举

在 Visual Basic .NET 中,您必须完全限定枚举常量。在转换 VBA 代码时,您必须将完全限定的枚举名称添加到枚举常量中。例如:

' VBAcode
Application.ActiveDocument.Paragraphs(1).Alignment = wdAlignParagraphRight

' Visual Basic .NETcode
ThisApplication.ActiveDocument.Paragraphs(1).Alignment = _
 Word.WdParagraphAlignment.wdAlignParagraphRight

数组

在 Visual Basic .NET 和 VBA 中,数组维数的默认下限为 0。在 VBA 中,您可以使用 Option Base 将下限值更改为另一个数字,通常是 1。Visual Basic .NET 不支持 Option Base 语句。

对带有 Option Base 1 的数组进行迁移的一种方法是,将 1 添加到数组维数,并且目标代码在索引 0 处包含一个额外插槽。大多数情况下,基于 .NET Framework 的代码会消耗少量内存,不过可以继续工作。

下面是使用这种数组的一个代码示例。

' VBAcode
Option Base 1
Private Sub Test()
 Dim myArr(10) As Integer   ' array is indexed 1..10
 addOne myArr
End Sub
Sub addOne(arr)
 For i = 1 To 10
    arr(i) = arr(i) + 1
 Next i
End Function

您可以将这段代码转换为 Visual Basic .NET,如下所示:

' Visual Basic .NETcode
Private Sub Test()
' array is indexed 0 to 10 and has an unused element at 0.
 Dim myArr(11) As Short   
 addOne(myArr)
End Sub
Sub addOne(ByRefarr() As Short)
 Dim i As Integer
 For i = 1 To 10
    arr(i) = arr(i) + 1
 Next i
End Sub

不可以这样做的唯一情况是,VBA 代码依赖于值为 1 的数组下限,而不是 0。例如,代码可以使用 LBOUND 函数确定数组的第一个索引,也可以使用 LBOUNDUBOUND 函数组合确定数组的大小。

当然,对使用 Option Base 的数组进行迁移的另一个选择是重写所有数组索引值,以使它们都从零开始。这可以最有效地利用内存,不过在迁移时可能需要更多工作,而且要更加小心。

数组的另一个问题是,在 Visual Basic .NET 中,对先前未设置维数的数组(使用 Dim)不能再重新设置维数(使用 ReDim)。在 Visual Basic .NET 中,使用新秩重新声明数组时会出现其他的 ReDim 问题。例如,下面的代码可以在 VBA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值