Он не хранится в docx, только путь к нему сохраняется. Таким образом, передача документа почти всегда разорвет ссылку. VSTO может обойти это, встроив XSD в качестве ресурса в приложение.
Но для VBA это сложнее - вам нужно указать путь, на который можно положиться на компьютере каждого пользователя, а затем развернуть там свой XSD. Один из способов - синхронизировать событие Document_Open
(или просто использовать AutoOpen
), чтобы при открытии документа пользователем (предупреждение: необходимо обеспечить безопасность макросов), вы можете просто «написать» свой XSD, жестко запрограммирован как строка в выделенном фрагменте кода, затем записывает его в файл и затем присоединяет этот файл с помощью подпрограммы, например:
Dim objSchema As XMLNamespace
Set objSchema = Application.XMLNamespaces.Add("c:\something\mynewlycreated.xsd")
objSchema.AttachToDocument ActiveDocument
Так как вы не оставляете после себя артефакты, вы можете затем удалить этот XSD с компьютера пользователя на Document_Close
или AutoClose
.