2014-09-20 213 views
0

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

在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中使用什么是Equivalent?

+2

VB6'CreateObject'的等价物是...'CreateObject',你可以在'Microsoft.VisualBasic'命名空间中找到它,但是你应该添加一个对MS Excel对象库的引用来确保强类型变量。 – 2014-09-20 18:36:14

+0

@Bjørn-RogerKringsjå,谢谢先生,但我不想使用Microsoft.VisualBasic命名空间,因为这不是他们正确的方式赚取vb.net正确。我已经克服了许多没有这个名字空间的问题,现在却陷入了困境。 – 2014-09-20 18:38:03

+0

哈利路亚!你走在正确的道路上。转到项目>添加引用> com> Microsoft Excel(版本)对象库。如果你没有找到它,然后搜索并下载。 – 2014-09-20 18:41:07

回答

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''FinalRealeaseComObject'; – 2014-09-20 18:39:07

+0

@OneFineDay,谢谢先生,但我不喜欢用那种方式,因为最终用户可能会或可能没有安装excel。 (可能是我错了,但我使用createobject funcion并使用错误处理程序启动,如果没有安装excel)。 – 2014-09-20 18:40:55

+0

我不认为'CreateObject'会在没有它的情况下工作 - 所以你说它呢? – OneFineDay 2014-09-20 21:15:14

1

有一种格式异常,vbscript和VB6代码将在VB.NET中运行。异常是所有的方法和函数/潜艇需要括号(而不是只有返回一个值)。所以CreateObject的工作原理是VBScript/VB6和VB.NET。在VB.Net你需要有这些线条中使用的COM,

Imports System 
Imports System.Runtime.InteropServices 

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

0

另一个选择在VB中后期绑定(但是你应该认真考虑,而不是

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

已经给了无论使用哪种创建对象或的CreateInstance非后期绑定的答案,你需要有“选项严格关”。