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方式,没有后期绑定,因为您可以直接从库中创建对象。用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"。