Word VBA Как повторно использовать временный (несохраненный) документ Word? - PullRequest
1 голос
/ 29 сентября 2019

У меня есть макрос Word VBA, который извлекает первое предложение каждого абзаца из исходного документа и помещает извлеченный текст во временный итоговый документ. Это помогает лучше писать.

В процессе работы я пишу что-то в исходном документе, запускаю макрос и вижу первые предложения во временном итоговом документе. Используя set docsummary = Documents.Add, временный документ всегда имеет имя файла в форме DocumentNN, где NN увеличивается на единицу при каждом запуске макроса.

Я хочу использовать set docsummary = Documents("some temp name") для извлечения и повторного использования одного и того жевременный документ снова и снова. Проблема в том, что я не могу установить имя временного документа без сохранения его на диск (и я не хочу этого делать, потому что макрос должен работать на моей машине с Windows и на Mac, и я неНе знаю временного пути к файлу на Mac.)

Есть ли способ установить распознаваемое свойство в новом временном документе (имя, идентификатор или что-то еще), чтобы я мог искать это значение внайти временный документ при повторном запуске моего макроса?

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

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

1 Ответ

2 голосов
/ 29 сентября 2019

Использование глобальной переменной возможно, но они могут "потеряться", если что-то "икнет" в редакторе VBA или проекте. По этой причине может иметь смысл проверить документ на что-то, по крайней мере, в качестве резервной копии на случай, если глобальная переменная будет сброшена на Nothing.

В принципе вы можете создать свой собственный CustomDocumentProperty,Или вы можете использовать документ Variable. Это не вещи, которые можно взять непосредственно из объекта Document, но к ним можно обратиться.

Например,

Dim docSummary as Document
Set docSummary = Documents.Add
docSummary.Variables("DocName") = "some temp name"

Затем, чтобы восстановить документ, в некотором коде, который должен работать с временным документом

Dim docSummary as Document
Set docSummary = RetrieveTempDoc()

И функцияпроверяет Variable (или CustomDocumentProperty или все, что вы решите использовать в качестве идентификатора):

Function RetrieveTempDoc() As Document
    Dim doc as Document

    For Each doc in Documents
      If doc.Variables("DocName") = "some temp name" Then
         Exit For
      End If
    Next
    Set RetrieveTempDoc = doc
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...