问题 是否可以将VBA转换为C#?


我在VBA中有一些代码块模块可以在少数Access数据库上运行。如果我想将编码转换为C#环境,我想知道如何继续。是否有可能实现和获得与我现在使用Access和VBA相同的结果?     在这一点上,我对C#完全陌生。


2466
2017-12-23 13:02


起源

你的mdb中有任何访问表单吗? - Cédric Guillemette
是的,代码从表单运行 - tksy


答案:


目前无法自动转换,但手动执行此操作也有助于提高您的C#技能。这里有一篇十大文章,带您了解常见的差异:

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

祝你好运,我希望这会有所帮助。


10
2017-12-23 13:27





需要注意的一点是,在VBA中编码时会自动包含一些对象名称空间和库引用。在C#中工作时需要明确添加这些内容。例如,

Selection.TypeText("foo")

在VBA成为

using Microsoft.Office.Interop.Word;

Application word = new Application();
word.Selection.TypeText("foo");

在C#中。右键单击“解决方案资源管理器”中的“引用”文件夹并选择“添加引用”,即可添加库引用。


3
2017-12-23 15:26



那就是嵌入Interop,我没有嵌入它而且它没有相应的工作:/ - Si8


您可以在msdn上找到有关此确切主题的一些有用信息 这里


2
2017-12-23 13:04





通常,您应该能够手动转换代码。您将找不到任何可以执行此操作的自动代码转换器。

话虽这么说,你用来访问数据的框架在C#和VBA世界中是完全不同的(它们在VB.NET和VBA之间甚至是完全不同的!)。因此,在开始之前,您将要阅读ADO.NET。


1
2017-12-23 13:04





http://www.developerfusion.com/tools/convert/vb-to-csharp/

不完美,但它会让你开始使用sytax。为了记录,这与您自己学习的内容无法比较。


0
2017-12-23 14:35



这是VB.NET,而不是VBA。非常不同的生物。 - Duncan Bayne


鉴于VBA非常类似于vb.net,我建议你转换为VB.net。实际上,您通常可以在代码中剪切+粘贴,特别是如果此类代码来自代码模块。如果您的代码有DAO.Recordsets,那么我建议在VB.net中创建一个“模仿”dao.recordset的类。因此,大多数VBA代码可以接近100%进入vb.net代码模块。因此,这表明您不需要转换,只需将VBA代码移动到VB.net即可。事实上,VBA中99%的命令都存在于VB.net中的SAME语法。


0
2017-10-02 20:14