我正在尝试绑定/使用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中的等价物是什么?
答案 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"。