2008-12-23 20 views
11

Tengo algunos módulos de bloque de código en VBA para ejecutar en algunas bases de datos de Access. Me gustaría saber cómo debo proceder si quiero convertir la codificación al entorno C#. ¿Y es posible implementar y obtener los mismos resultados que ahora obtengo con Access y VBA? Soy completamente nuevo en C# en este punto.¿Es posible convertir VBA a C#?

+0

¿Tiene algún formulario de acceso en su mdb? –

+0

bien si el código se ejecuta desde los formularios – tksy

Respuesta

10

La conversión automática no es posible en este momento, pero hacerlo manualmente también ayudará a mejorar sus habilidades de C#. Hay un 10 Top artículo aquí que te lleva a través de las diferencias comunes:

http://msdn.microsoft.com/en-us/library/aa164018%28office.10%29.aspx

También puede encontrar los siguientes enlaces útiles:

La página de MSDN para el desarrollo de soluciones de oficina con C#:

http://msdn.microsoft.com/en-us/library/ms228286.aspx

La página de desarrollo de aplicaciones MSDN Visual C# (para comenzar en el desarrollo de C#):

http://msdn.microsoft.com/en-us/library/aezdt881.aspx

Buena suerte y espero que esto ayude.

2

Puede encontrar información útil sobre este tema exacto en MSDN here

1

general, debe ser capaz de ir convertir el código manualmente. No encontrará ningún convertidor de código automatizado que lo haga.

Dicho esto, los marcos que utiliza para acceder a los datos son bastante diferentes en los mundos C# y VBA (¡incluso son bastante diferentes entre VB.NET y VBA!). Por lo tanto, querrá leer en ADO.NET antes de comenzar.

3

Una cosa a tener en cuenta es que algunos espacios de nombre de objeto y referencias de biblioteca se incluyen automáticamente cuando se está codificando en VBA. Estos deben agregarse explícitamente cuando se trabaja en C#. Por ejemplo,

Selection.TypeText("foo") 

en VBA se convierte en

using Microsoft.Office.Interop.Word; 

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

en C#. Las referencias de la biblioteca se pueden agregar haciendo clic derecho en la carpeta Referencias en el Explorador de soluciones y seleccionando "Agregar referencia".

+0

Eso está incrustando la interoperabilidad, no la incrusto y no funciona en consecuencia: / – Si8

0

Teniendo en cuenta que VBA es MUY similar a vb.net, entonces le sugiero que se convierta a VB.net. De hecho, a menudo puede cortar + pegar en el código, especialmente si dicho código es de un módulo de código. Si su código tiene DAO.Recordsets, entonces sugiero crear una clase en VB.net que "imite" el dao.recordset. Como tal, la mayoría del código VBA puede acercarse al 100% en un módulo de código vb.net. Por lo tanto, esto sugiere que no necesita una conversión, simplemente mueva el código de VBA a VB.net. De hecho, el 99% de los comandos en VBA existen con la misma sintaxis en VB.net.