VB.net中CreateObject的等效代码

时间:2014-09-20 18:27:05

标签: c# .net vb.net object vb6

我正在尝试绑定/使用vb.net中的对象,如excel.application等。 我主要是一个vb6编码器,现在转移和学习vb.net。

在vb6中我可以通过使用createobject函数轻松处理它

这是vb6代码:

Dim objXLS As Object
Dim objWorkBook As Object
Set objXLS = CreateObject("Excel.Application")
objXLS.Visible = False
Set objWorkBook = objXLS.Workbooks.Open("Excel File Goes Here")
objWorkBook.SaveAs strCurPath & "\Temp.csv", 6
objWorkBook.Close 2
objXLS.Quit
Set objWorkBook = Nothing
Set objXLS = Nothing

我查看了互联网,发现下面是c#的解决方案,但不是.net。我没能在vb.net中使用动态类型/命令。

这是链接:

Equivalent code of CreateObject in C#

也有凌乱的方式..但我喜欢用简单的方法(标签绑定等)

那么,是否可以使用动态密钥在vb.net中使用或vb.net中的等价物是什么?

3 个答案:

答案 0 :(得分:3)

VB.Net方式,没有后期绑定,因为您可以直接从库中创建对象。使用Marshal类清理它们,因为它是一个COM对象 - 按相反的顺序。

Dim objXLS As New Excel.Application
Dim objWorkBook As Excel.Workbook = objXLS.Workbooks.Open("Excel File Goes Here")
objXLS.Visible = False
'work with file
objWorkBook.SaveAs strCurPath & "\Temp.csv", 6
objWorkBook.Close 2
objXLS.Quit
Marshall.FinalReleaseComObject(objWorkBook)
Marshall.FinalReleaseComObject(objXLS)

答案 1 :(得分:1)

有一个格式化异常,vbscript和VB6代码将在VB.NET中运行。例外是所有方法和函数/子需要括号(而不是仅返回值的那些)。所以CreateObject适用于VBScript / VB6和VB.NET。在VB.Net中,您需要使用这些行来使用COM,

Imports System
Imports System.Runtime.InteropServices

CreateObject使用IDispatch(又名自动化)。您不需要知道对象的用途。

答案 2 :(得分:0)

VB中后期绑定的另一种选择(但你应该认真考虑已经给出的非后期绑定答案

Dim objXLS As Object = System.Activator.CreateInstance(System.Type.GetTypeFromProgID("Excel.Application"))

使用CreateObject或CreateInstance,您需要" Option Strict Off"。