2014-09-20 4 views
0

Я пытаюсь связать/использовать объекты в vb.net, например, excel.application и т. Д. Я в основном кодер vb6, и теперь меняю и изучаю vb.net.Эквивалентный код CreateObject в 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?

+2

Эквивалент VB6 'CreateObject' является ...' CreateObject'. Вы найдете его в пространстве имен Microsoft.VisualBasic. Однако вы должны добавить ссылку на библиотеку объектов MS Excel, чтобы обеспечить строго типизированное переменные. –

+0

@ Bjørn-RogerKringsjå, спасибо, сэр, но я не хочу использовать пространство имен Microsoft.VisualBasic, поскольку это не так. правильно изучить vb.net. Я преодолел многие проблемы без этого пространства имен и теперь застрял в этом. –

+0

Аллилуйя! Вы на правильном пути. Перейдите в проект> добавить ссылку> com> Библиотека объектов Microsoft Excel (версия). Если вы его не найдете, выполните поиск и загрузку. –

ответ

3

Способ 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) 
+1

Я дам вам +1 исключительно на 'FinalRealeaseComObject';) –

+0

@OneFineDay, спасибо, сэр, но я не люблю использовать этот способ, поскольку конечный пользователь может или не может иметь установленный excel. (возможно, я ошибаюсь, но я использую функцию createobject и использую обработчик ошибок для запуска, если excel не установлен). –

+0

Я не думал, что 'CreateObject' тоже будет работать без него - так что вы говорите? – OneFineDay

1

С одним исключением для форматирования в VB.NET будет работать код vbscript и VB6. Исключение составляют все методы, а функции/subs требуют скобки (а не только те, которые возвращают значение). Таким образом, CreateObject работает с VBScript/VB6 и VB.NET. В VB.Net вам нужно иметь эти линии, чтобы использовать COM,

Imports System 
Imports System.Runtime.InteropServices 

CreateObject использует IDispatch (ака Automation). Вам не нужно знать, какой объект должен его использовать.

0

Еще один вариант для позднего связывания в VB (но вы должны серьезно рассмотреть вопрос, не поздно обязывающий ответ уже дали вместо

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

С либо CreateObject или CreateInstance, вам нужно иметь «Option Strict Off».

Смежные вопросы