Есть ли код поля Word для пути к папке?

4

В MS Word вы можете вставить код поля, чтобы показать имя файла документа с возможностью включать или не включать полный путь.

Я хочу только вставить путь к папке, исключая имя файла.

Макросы не вариант.

Можно ли это сделать?

Есть ли альтернативный код поля?

Есть ли какой-нибудь волшебный недокументированный переключатель на поле FILENAME? (Microsoft, как известно, делала это раньше!)

Shevek
источник
Я отредактировал свой ответ, чтобы добавить возможное решение ... макросы не являются опцией в выходном файле или вообще? Я думаю, что вам нужно где-то использовать макрос, но мое решение будет означать, что сохраняемый файл не содержит макросов, в то время как у человека, создающего документ, есть макрос, это приемлемое решение?
Мокубай
1
Макросы не допускаются - корпоративная политика
Шевек
Я потратил некоторое время на изучение того, что можно сделать с помощью полевых кодов в Word, и нет ничего более универсального, чем даже думать о том, чтобы сделать это без использования макроса или какого-либо другого интеллектуального языка программирования. Из того, что я сделал в Google, я не могу найти никаких переключателей или способов сделать это, которые не включают макрос. По прошествии некоторого времени я, вероятно, мог бы написать немного кода Python, который просматривал каталог, полный файлов, и помещал правильный путь в нижний колонтитул, но он никогда не будет полностью автоматизирован в Word. Если кто-то найдет способ, которым мне было бы любопытно ...
Мокубай
Корпоративная политика? Это должно действительно препятствовать производительности!
marcusw

Ответы:

3

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

Проблема в том, что это может мешать форматированию, и это очень плохо.

- = EDIT = -

Чуть менее грязное решение ...

Если вы не возражаете против наличия макроса в вашем файле normal.dotm и наличия скрытой переменной в вашем документе, то вы можете использовать этот макрос и установить кнопку на вашем быстром доступе для его запуска ... Я пробовал его и он работает с документом без макросов, поэтому самому документу не нужны макросы для использования этого метода, я бы поместил это в свой шаблон normal.dotm ...

Sub updatePath()
'
' updatePath Macro
'
'
Dim myPath As String
myPath = ActiveDocument.Path
If myPath = "" Then
    'do nothing as the document has no path... needs to be saved first
Else
    If ActiveDocument.Variables.Count = 0 Then
        ActiveDocument.Variables.Add Name:="myPath", Value:=myPath
    Else
        i = 1
        Do While i < (ActiveDocument.Variables.Count + 1)
            If ActiveDocument.Variables.Item(i).Name = "myPath" Then
                ActiveDocument.Variables.Item(i).Value = myPath
            End If
            i = i + 1
        Loop
    End If
End If

End Sub

А затем просто добавьте код поля

DOCVARIABLE myPath

который при обновлении после запуска макроса выше будет делать именно то, что вы хотели. Конечно, это два или три клика, а не просто обновление, но это означает, что ваш экспортированный документ получает правильный тип поля, и только люди с этим макросом могут сказать, где документ должен храниться :)

Мокубай
источник
1
Мне нравится думать, но согласен, что это глупо!
Шевек
3

К сожалению, нет способа сделать это с полем FILENAME без макроса, поле FILENAME не предлагает опцию пропустить имя файла.

В любом случае, здесь есть макрос для вставки пути к файлу без имени файла для тех, кому это может понадобиться.

Sub InsertPath ()
  Dim sPath As String

  sPath = ActiveDocument.Path
  Если sPath = "" Тогда
    MsgBox «Вам нужно сохранить документ перед запуском этого макроса.», _
           vbOKOnly, "Документ не сохранен"
  еще
    sPath = sPath & Application.PathSeparator
    Selection.TypeText (SPATH)
  EndIf
ENDSUB
Jawa
источник
1
Я действительно не могу поверить, что для этого нет встроенного кода поля, например, FILEPATH или даже дальнейшего переключения на FILENAME. Плохо на МС
Шевек