【发布时间】:2010-09-28 04:16:25
【问题描述】:
我在 VBA 中有几个代码块模块可以在几个 Access 数据库上运行。如果我想将编码转换为 C# 环境,我想知道我应该如何进行。是否有可能实现并获得与现在使用 Access 和 VBA 相同的结果? 在这一点上,我对 C# 完全陌生。
【问题讨论】:
-
您的 mdb 中有访问表单吗?
-
是的,代码从表单运行
我在 VBA 中有几个代码块模块可以在几个 Access 数据库上运行。如果我想将编码转换为 C# 环境,我想知道我应该如何进行。是否有可能实现并获得与现在使用 Access 和 VBA 相同的结果? 在这一点上,我对 C# 完全陌生。
【问题讨论】:
一般来说,您应该可以手动转换代码。您不会找到任何可以做到这一点的自动代码转换器。
话虽如此,您用来访问数据的框架在 C# 和 VBA 世界中是完全不同的(它们甚至在 VB.NET 和 VBA 之间也完全不同!)。因此,在开始之前,您需要先阅读 ADO.NET。
【讨论】:
目前无法进行自动转换,但手动进行也有助于提高您的 C# 技能。这里有一篇 Top 10 文章带您了解常见差异:
http://msdn.microsoft.com/en-us/library/aa164018%28office.10%29.aspx
您可能还会发现以下链接很有用:
使用 C# 开发 Office 解决方案的 MSDN 页面:
http://msdn.microsoft.com/en-us/library/ms228286.aspx
MSDN Visual C# 应用程序开发页面(用于开始 C# 开发):
http://msdn.microsoft.com/en-us/library/aezdt881.aspx
祝你好运,我希望这会有所帮助。
【讨论】:
需要注意的一点是,当您在 VBA 中编码时,会自动包含一些对象名称空间和库引用。在 C# 中工作时需要显式添加这些。例如,
Selection.TypeText("foo")
在 VBA 中变成
using Microsoft.Office.Interop.Word;
Application word = new Application();
word.Selection.TypeText("foo");
在 C# 中。可以通过右键单击解决方案资源管理器中的 References 文件夹并选择“添加引用”来添加库引用。
【讨论】:
鉴于 VBA 与 vb.net 非常相似,那么我建议您转换为 VB.net。实际上,您通常可以剪切 + 粘贴代码,尤其是如果此类代码来自代码模块。如果您的代码有 DAO.Recordsets,那么我建议在 VB.net 中创建一个“模仿”dao.recordset 的类。因此,大多数 VBA 代码可以接近 100% 进入 vb.net 代码模块。所以这表明您不需要转换,只需将 VBA 代码移至 VB.net。事实上,VBA 中 99% 的命令在 VB.net 中都以相同的语法存在。
【讨论】: