VB.net中CreateObject的等价代码

本文关键字:代码 CreateObject net VB | 更新日期: 2023-09-27 18:23:48

我正在尝试绑定/使用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中使用动态类型/命令。

这是链接:

C#中CreateObject的等价代码

还有一种混乱的方式。。但我喜欢简单的方式(标签绑定或左右)

那么,在vb.net中有没有使用动态键的方法,或者vb.net中的等效键是什么?

VB.net中CreateObject的等价代码

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)

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

Imports System
Imports System.Runtime.InteropServices

CreateObject使用IDispatch(又名Automation)。您不需要知道对象是什么就可以使用它。

VB中的另一个后期绑定选项(但您应该认真考虑已经给出的非后期绑定答案,而不是

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

对于CreateObject或CreateInstance,您需要具有"Option Strict Off"。