Наш продукт использует VSTO (C #) для создания нового документа из шаблона:
Document document =_application.Documents.Add(filePath);
Переменная 'document' будет содержать ссылку на объект документа.Теперь у нас есть клиент, у которого установлен шаблон в папке автозагрузки Word, который содержит код VBA, который создает документ, использует этот документ и удаляет его.
'' Module contents
Dim oAppClass As New ThisApplication
Public Sub AutoExec()
Set oAppClass.oApp = Word.Application
End Sub
'' Class module contents
Public WithEvents oApp As Word.Application
Private Sub oApp_NewDocument(ByVal Doc As Document)
Dim oDoc As Document
Set oDoc = Documents.Add
' do something with the document
oDoc.Close
End Sub
Когда этот код vba установлен, код C #(вверху вопроса) верните ноль вместо только что созданного документа.Таким образом, документ фактически создается в Word, а коллекция application.Documents содержит дополнительный документ, но переменная 'document' имеет значение null.
Я ищу правильное решение для получения ссылки на вновь созданныйдокумент.
Я могу получить список открытых в данный момент документов перед добавлением нового документа, затем получить список, сравнить их и найти новый документ.Но если код VBA создает новый документ, не закрывая его, будет 2 новых документа.Чем я до сих пор не знаю, что это за документ, который я создал из кода C #.
Так есть ли способ определить, какой документ я создал из кода C # в этой ситуации?