C# VB.net中CreateObject的等效代码

C# VB.net中CreateObject的等效代码,c#,.net,vb.net,object,vb6,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 =

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

以下是链接:

还有一条路很乱。。但我喜欢用简单的方法(标签装订之类的)


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

vb.net方法,没有后期绑定,因为您可以直接从库中创建对象。使用封送处理类清理它们,因为其中包含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)

Net方式,没有后期绑定,因为您可以直接从库中创建对象。使用封送处理类清理它们,因为其中包含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(也称为自动化)。您不需要知道使用它的对象是什么。

只有一个格式例外,vbscript和VB6代码将在VB.NET中运行。例外情况是所有方法和函数/子函数都需要括号(而不仅仅是返回值的方法和函数/子函数)。因此CreateObject可以使用VBScript/VB6和VB.NET。在VB.Net中,要使用COM,需要有这些行

Imports System
Imports System.Runtime.InteropServices

CreateObject使用IDispatch(也称为自动化)。你不需要知道一个对象是如何使用它的。

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

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

使用CurATE Objor或CurATE实例,您需要“选项严格关闭”。

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

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


对于CreateObject或CreateInstance,您需要关闭“Option Strict”.

VB6
CreateObject
的等价物是…
CreateObject
。您可以在
Microsoft.VisualBasic
命名空间中找到它。但是,您应该添加对MS Excel对象库的引用,以确保强类型变量。@Bjørn RogerKringsjå,谢谢,先生,但我不想将Microsoft.VisualBasic命名空间用作这不是正确学习vb.net的方法。我已经克服了许多没有名称空间的问题,现在仍然坚持这样做。哈利路亚!你走在正确的道路上。转到project>add reference>com>Microsoft Excel(版本)对象库。如果您没有找到它,请搜索并下载。@Bjørn RogerKringsjå,再次感谢,先生,但是请注意“Microsoft Excel(版本)对象”,我为什么没有添加直接引用作为用户的问题可能没有安装相同版本的office/Excel库:((可能是我错了)但是,无论用户在其pc上安装了什么版本,如何使用我的代码?@user3614957您似乎将
Microsoft.VisualBasic
命名空间与
Microsoft.VisualBasic.Compatibility
命名空间相混淆。您可能会避免使用后者,但前者是包含许多实际VB功能和函数的正确VB。如果您希望为了避免这种情况,您最好避免使用VB作为一般语言。VB6
CreateObject
的等价物是……
CreateObject
。您可以在
Microsoft.VisualBasic
命名空间中找到它。但是,您应该添加对MS Excel对象库的引用,以确保强类型变量。@Bjørn RogerKringsjå,thanks先生,但我不想使用Microsoft.VisualBasic名称空间,因为这不是正确学习vb.net的方法。我已经克服了许多没有该名称空间的问题,现在仍然坚持使用该名称空间。哈利路亚!你走对了路。转到项目>添加引用>com>Microsoft Excel(版本)对象库。如果您没有找到它,请搜索并下载。@Bjørn RogerKringsjå,再次感谢,先生,但是请注意“Microsoft Excel(版本)对象”,我为什么没有添加直接引用作为用户的问题可能没有安装相同版本的office/Excel库:((可能是我错了)但是,无论用户在其pc上安装了什么版本,如何使用我的代码?@user3614957您似乎将
Microsoft.VisualBasic
命名空间与
Microsoft.VisualBasic.Compatibility
命名空间相混淆。您可能会避免使用后者,但前者是包含许多实际VB功能和函数的正确VB。如果您希望为了避免这种情况,您最好避免使用VB作为一种语言。我只会在
FinalRealeaseComObject
;)上给您一个+1,谢谢,先生,但我不喜欢这样使用,因为最终用户可能安装了excel,也可能没有安装excel。(可能是我错了,但如果未安装excel,我会使用createobject函数并使用错误处理程序启动)。我不认为没有它,
CreateObject
也能工作-你这么说是这样吗?@OneFineDay,再次感谢,先生,但是,先生,没有几个问题:1.我在vb.net中没有看到Excel.Application作为新对象。我需要向MS Excel对象库添加COM引用吗?如果是这样的话:a)我有版本11(Office 2003),但如果最终用户拥有office 2002/2007/2010甚至2013,该怎么办?b)所有版本都会像我添加了version 2003库一样工作吗?c)如果最终用户根本没有MS Excel,你将需要研究哪一个库与Excel的哪个版本有关。如果用户没有Excel,它就不工作了。它是如何包装的,所以它仍然需要基础。一旦库就位并导入命名空间,你就会看到Excel和它的类层次结构。.我只会在最后一天给你+1分,谢谢先生,