Я начинаю писать код, который станет применимым к нескольким книгам, но всегда использует одну и ту же справочную книгу. В коде будет много субтитров, и по мере того, как я стараюсь избегать использования переменной в справочной книге в каждом суб, я хотел бы объявить их Global.
Сначала у меня было:
Global Locations As Excel.Workbook
Set Locations = Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx")
Который дал мне:
"Ошибка компиляции: недопустимая внешняя процедура"
После некоторого поиска в Google я нашел следующий код:
Public Const Locations As Excel.Workbook = "Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx")"
Который дал мне:
"Ошибка компиляции: ожидается: имя типа
Изменить:
Использование:
Public Const Locations As Excel.Workbook = "Workbooks.Open('M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx')"
(Одиночные кавычки в инструкции Workbooks.Open) приводит к той же ошибке, что и при использовании двойных кавычек.
Кто знает, что я делаю неправильно?
Edit2:
Я также попытался объявить переменные в "ThisWorkbook", следуя этому ответу, используя:
Private Sub Workbook_Open()
Dim Locations As Excel.Workbook
Dim MergeBook As Excel.Workbook
Dim TotalRowsMerged As String
Locations = Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\locXws.xlsx")
MergeBook = Workbooks.Open("M:\My Documents\MSC Thesis\Italy\Merged\DURUM IT yields merged.xlsm")
TotalRowsMerged = MergeBook.Worksheets("Sheet1").UsedRange.Rows.Count
End Sub
Но затем он возвращает
"Требуемый объект"
в моем модуле.
Edit3:
У меня теперь есть это, что работает, но имеет недостаток в том, чтобы скопировать строки SET в каждый Sub, должен быть лучший способ сделать это?
Global Locations As Workbook
Global MergeBook As Workbook
Global TotalRowsMerged As String
Sub Fill_CZ_Array()
Set Locations = Application.Workbooks("locXws.xlsx")
Set MergeBook = Application.Workbooks("DURUM IT yields merged.xlsm")
TotalRowsMerged = MergeBook.Worksheets("Sheet1").UsedRange.Rows.Count