2016-01-06 3 views
-1

Я использую VBA для автоматизации некоторых задач в некоторых файлах Word и Excel (Office 2010) и между ними. Прямо сейчас у меня есть код VBA, который используется только Word, хранящимся в файле Word, и код VBA, который используется только в Excel, хранящемся в файле Excel, причем материал VBA с перекрестными приложениями хранится в файле Word. Тем не менее, есть некоторые пользовательские типы и константы, которые я хотел бы использовать как в специфичном для Word, так и в VBA-коде Excel. Есть ли нейтральный для приложения способ хранить эти общие типы данных и константы в отдельном модуле, например, в VBscript, где он может использоваться как Excel, так и Word, без необходимости определять их в обоих местах? Если да, как я могу ссылаться на этот внешний файл в каждом шаблоне?Использование VBscript для хранения пользовательских типов и констант для обмена данными между Word и Excel VBA?

+0

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

ответ

2

Вы можете сохранить их в .bas-файле и импортировать обновление. Для Excel, импорт с помощью:

Public Sub GetModules() 
    ThisWorkbook.VBProject.VBComponents("modCommons").Name = "DELETEME" 
    ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents("DELETEME") 
    ThisWorkbook.VBProject.VBComponents.Import ("C:\modCommons.bas") 
End Sub 

modCommons.bas

Attribute VB_Name = "modCommons" 
    Public Const itest As Integer = 101 
    Public Const itest2 As Integer = 102 

    Public Sub TestSub 
     msgbox "test success" 
    End Sub 

Для Word, заменить ThisWorkbook с ThisDocument.

+0

Спасибо! Это сработало отлично, за исключением того, что изначально я все время получал ошибку 1004 во время выполнения, что-то об объекте VBproject не удалось. Я искал эту ошибку и обнаружил, что мне нужно перейти в параметры центра доверия в моем файле Excel и проверить параметр «Доверять доступ к объектной модели проекта VBA». Когда я это сделал, все было здорово. – user3681913

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