2015-07-16 3 views
1

Спасибо заранее. Я очень новичок в кодировании и наткнулся на небольшую проблему. Я создал форму окна, которая заполняет лист Excel на заднем плане для различных отчетов. Я создал класс, но теперь не могу понять, как получить рабочий лист в отдельной форме. Это мой оригинальный код, и он отлично работал при использовании для одной формы.VB.Net Класс Excel создает, но отдельные листы

Dim iExcel As Excel.Application 
    Dim iBook As Excel.Workbook 
    Dim iSheet As Excel.Worksheet 

    iExcel = CreateObject("Excel.Application") 
    iExcel.Visible = True 
    iBook = iExcel.Workbooks.Open("C:\.....") 
    iSheet = iBook.Worksheets("Lifts")  

Но, создав класс, я не могу понять, как вызвать отдельный лист в экземпляре. Это мой новый код с классом

Dim excelNew As ExcelOpen = New ExcelOpen() 
    excelNew.OpenExcel() 

excelNew.OpenExcel() открывает книгу, но мне нужно, чтобы это было на праве листа. Но как я могу назвать конкретный лист для отдельных форм в этом случае «Инжиниринг» вместо «Лифты»?

+1

Где код класса 'ExcelOpen'? Мы не можем видеть, что он делает, поэтому почти невозможно ответить на ваш вопрос. Где вы используете этот класс? Вам действительно нужно опубликовать полный код, чтобы получить четкое представление. – joehanna

+0

Также, это VB/VBA или VB.NET? Код несколько отличается для каждого языка. BTW, 'CreatObject' имеет орфографическую ошибку. – joehanna

+0

Он говорит VB.net в теме –

ответ

0

Используя код размещен, вот что я думаю, что вы ищете:

Public Class ExcelOpen 

    Private sheetName As String 

    Public Sub New(Optional ByVal wsName As String = "Sheet1") 
     sheetName = wsName 
    End Sub 

    Public Sub OpenExcel() 
     Dim iExcel As Excel.Application 
     Dim iBook As Excel.Workbook 
     Dim iSheet As Excel.Worksheet 
     iExcel = CreateObject("Excel.Application") 
     iExcel.Visible = True 
     iBook = iExcel.Workbooks.Open("C:\.....") 
     iSheet = iBook.Worksheets(sheetName) 
    End Sub 

End Class 

Dim excelNew As ExcelOpen = New ExcelOpen("Engineering") 
excelNew.OpenExcel() 
+0

Josh извините за поздний ответ. К сожалению, это не сработало. –

+0

В классе именно то, что вы (Джош) выложили на свой ответ. Но я не могу указать имя листа в классе, поскольку это то, что будет иметь каждая форма, которая использует класс и вызывается оттуда. –

+0

Имя листа в предоставленном классе I является * переменной *. Вы передаете имя листа, которое хотите, каждый раз, когда вы создаете новый экземпляр класса, как в двух последних строках. Вам не нужно использовать буквальное значение (например, «Инжиниринг»); вы можете использовать переменную типа Dim DimelNew As ExcelOpen = Новый ExcelOpen (textSheetName.Text) '. – Josh

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