2014-09-20 215 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非後期綁定的答案,你需要有「選項嚴格關」。