Как установить объект Master Workbooks?

Я подумал, можно ли установить основную книгу в Excel VBA и получить к ней доступ ко всем процедурам и функциям?

Поскольку я новичок в VBA, я не понимаю синтаксис, который использует VBA.

Dim MasterWB as Workbook
Set MasterWB = Workbooks.Open("Path to my Workbook")

Но если я захочу получить к нему доступ в другой процедуре или функции, я получу ошибку определения объекта.

Я не хочу объявлять объект в каждой подпрограмме или функции. Большое спасибо!

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
0
112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть два способа сделать это:

Хорошая практика:

Option Explicit
Sub Test()

    Dim MasterWB As Workbook
    Set MasterWB = Workbooks.Open("Path")
    UseWb MasterWB

End Sub
Sub UseWb(wb As Workbook)

    wb.Close

End Sub

Вы не должны использовать практику:

Option Explicit
Public MasterWB As Workbook
Sub Test()

    Set MasterWB = Workbooks.Open("Path")
    UseWb MasterWB

End Sub
Sub UseWb()

    wb.Close

End Sub

Первый позволяет передать Workbook Variable в качестве параметра другим функциям, в этом случае вы не можете использовать ByVal, но другие переменные, такие как Integerили Long, можно использовать как ByVal вместо (по умолчанию) ByRef.

ByVal означает, что вы передаете только значение этой переменной, поэтому вы не будете изменять его в функции.

ByRef означает, что вы передаете ссылку, поэтому другая функция может изменить исходную переменную.

Второй способ позволяет вам использовать переменную только в качестве ссылки, поэтому в ней могут быть изменения, которые вы не заметите.

Надеюсь, это немного прояснит ваш вопрос.

с параметрами объекта вы могу используете ByVal, так как это указатель на объект, который передается по значению. Вы можете изменить объект, на который указывает указатель. Что вы делаете, не могу, так это изменяете сам указатель, чтобы он указывал на какой-то другой объект.

chris neilsen 28.05.2019 02:55

Другие вопросы по теме