Я хочу получить объект листа из определенной книги, например так:
Set ws = Application.Workbooks("WorkBookName.xlsm").Worksheets("sheet1")
Однако я хочу использовать кодовое имя рабочего листа, поскольку имя листа можно изменить. Например:
Set ws = Application.Workbooks("WorkBookName.xlsm").Sheet1
Теперь я знаю, что это не работает, поскольку Sheet1 - глобальная переменная, созданная редактором VBA для удобства.
Я также знаю, что мог бы использовать индекс (то есть Рабочие листы (1)) для получения объекта рабочего листа, но если кто-то переместит рабочие листы в рабочей книге, функции не будут работать должным образом.
Итак, мой вопрос: как я могу получить объект рабочего листа из определенной рабочей книги (не «ThisWorkbook») и сохранить его в переменной, используя CodeName?
Вот пример кода (я очень новичок в публикации на stackoverflow.com):
Public Sub Main()
' Test Class
Dim test As New StoreContestModel
test.StoreID = "28"
test.StoreName = "Kippersville"
' Other workbook
Dim wb As Workbook
Dim ws As Worksheet
Dim r As Range
Dim v As String
' Showing test StoreID in other workbook. Code is broken up because as one-line it did not work.
Set wb = Application.Workbooks("Contest.xlsm")
Set ws = Application.Workbooks("Contest.xlsm").Sheet1 ' wb.Sheet1 didn't work
Set r = ws.Range("N2")
r.value = test.StoreID
End Sub
Я хочу, чтобы StoreID отображался в ячейке, указанной в другой книге. Однако я получаю эту ошибку:
Ошибка времени выполнения '438':
Объект не поддерживает это свойство или метод