• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 337
  • Last Modified:

Can code developed in C# .NET 3.5 be imported to VBA for Office 2008?

Hi All,

I was wondering, is it possible to create code in C# .NET 3.5 and build the dll's and somehow import the library in standard VBA macro in Word.

Can I then call the library and use its methods? Maybe using an Active X control?

  • 3
  • 2
1 Solution
What version of word?
Yes, it can be done:

create the dll build it then use tblexp.exe or use regasm.exe.


Tlbexp.exe generates a type library that contains definitions of the types defined in the assembly. Applications such as Visual Basic 6.0 can use the generated type library to bind to the .NET types defined in the assembly.

The entire assembly is converted at once. You cannot use Tlbexp.exe to generate type information for a subset of the types defined in an assembly.

You cannot use Tlbexp.exe to produce a type library from an assembly that was imported using the Type Library Importer (Tlbimp.exe). Instead, you should refer to the original type library that was imported with Tlbimp.exe. You can export a type library from an assembly that references assemblies that were imported using Tlbimp.exe. See the examples section below.

Tlbexp.exe places generated type libraries in the current working directory or the directory specified for the output file. A single assembly might cause several type libraries to be generated.

Tlbexp.exe generates a type library but does not register it. This is in contrast to the Assembly Registration tool (Regasm.exe), which both generates and registers a type library. To generate and register a type library with COM, use Regasm.exe.

If you do not specify either the /win32 or /win64 option, Tlbexp.exe generates a 32-bit or 64-bit type library that corresponds to the type of computer on which you are performing the compilation (32-bit or 64-bit computer). For cross-compilation purposes, you can use the /win64 option on a 32-bit computer to generate a 64-bit type library and you can use the /win32 option on a 64-bit computer to generate a 32-bit type library. In 32-bit type libraries, the SYSKIND value is set to SYS_WIN32. In 64-bit type libraries, the SYSKIND value is set to SYS_WIN64. All data type transformations (for example, pointer-sized data types such as IntPtr and UIntPtr) are converted appropriately.
lp84Author Commented:
So are you saying regasm is better to use?

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

lp84Author Commented:
This is for MS Office 2007, Word 2007
If this is for the MS Office 2007 then no need to use regasm, you can imports the dll directly to your macro...
Miguel OzSoftware EngineerCommented:
How to: Expose Code to VBA in a Visual C# Project
Calling Code in Document-Level Customizations from VBA
If you have access to online books I will recommend Andrew Whitechapel's ".NET development
for Microsoft Office", where there's a detailed list of steps on how to do this task (better explained than my first link anyway)

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now