2013-07-18 2 views
0

В C переменные с пометкой extern должны быть объявлены локально, но могут быть определены извне. Возможно ли это с VBA? Таким образом, я начинаю примерно так:Как объявить переменную `extern` в VBA?

DataSource_14.accdb: 
    ' References CommonFunctions.accdb 
    Public SOURCE_ID As Long = 14 

    Public Sub Baz() 
     Foo 
     Bar 
    End Sub 

CommonFunctions.accdb: 
    Extern SOURCE_ID As Long ' <- what's the proper way to declare this? 
    Public Sub Foo() 
     Debug.Print "Doing Foo stuff with source " & SOURCE_ID 
    End Sub 
    Public Sub Bar() 
     Debug.Print "Doing Bar stuff with source " & SOURCE_ID 
    End Sub 

ответ

1

Если вы перейдете в раздел «Инструменты/ссылки в VBA», вы можете добавить ссылку на другую базу данных. Затем вы можете использовать:

Application.Run "projectname.procedurename" 

(возвращаемое значение является Variant)

В 'Projectname' по умолчанию имя базы данных, но может быть изменен в VB Editor (Инструменты, VBAProject Свойства).

Однако это не приведет к получению общедоступной переменной. Эта переменная должна быть возвращена процедурой Function.

В качестве альтернативы, другой базой данных может быть база данных (или надстройка). См. here и here.

Я считаю, что можно было бы вернуть переменную, создав базу данных библиотеки и используя класс в этой базе данных, чтобы открыть поле (свойство) класса. Но создание процедуры Function намного проще.

Если возможно, гораздо проще создать модуль, содержащий полезные функции и скопировав его между базами данных. Я считаю, что создание и использование надстроек Access (баз данных) может быть проблематичным.

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