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

4386
Shevek

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

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

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

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

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

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

4
I've edited my answer to add a possible solution... are macros not an option in the output file or at all? I think you have to use a macro somewhere but my solution would mean that the file that gets *saved* is macro free while the person creating the document has a macro, is that an acceptable solution? Mokubai 14 лет назад 0
Макросы не разрешены - корпоративная политика Shevek 14 лет назад 1
I've spent a while looking into what can be done with the fieldcodes in Word and there is nothing like as much versatility to even think about doing it without using a macro or some other *intelligent* programming language. From what Googling I've done I can't find any switches or ways to do this that don't involve a macro. Given some time I could probably write a bit of Python code that traversed a directory full of files and put the correct path in the footer, but it would never be fully automated in Word. If someone finds the way I'd be curious... Mokubai 14 лет назад 0
Корпоративная политика? Это должно действительно препятствовать производительности! marcusw 14 лет назад 0

2 ответа на вопрос

3
Jawa

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

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

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

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

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

- = 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

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

Мне нравится думать, но согласен, что это глупо! Shevek 14 лет назад 1