Удаление внутренней ссылки на Word-шаблоны через VBA - PullRequest
3 голосов
/ 15 марта 2011

Я пытаюсь создать небольшое VB-приложение, которое удаляет внутреннюю ссылку в документах Word, на их шаблоны.

Я нашел это руководство http://word.tips.net/Pages/T001437_Batch_Template_Changes.html и я пытаюсь изменить его, чтобы использовать с VBA вместо программирования макросов внутри Office.

Тем не менее, я застрял на том, как заставить Document.Open для работы. Любая помощь приветствуется.

Предполагается, что он запускается как отдельное приложение, а не как рут изнутри Word. Я ищу способ выполнить то, что делает макрос, но не из Word.

Ответы [ 2 ]

5 голосов
/ 05 апреля 2011

Здесь есть две плохие новости.

1) У документа должен быть шаблон.Вы не можете удалить его, только измените его на что-то другое.

2) В любом случае изменение шаблона ничего не дает.См. эту страницу .

Интересно, проблема в методе Open в том, что вы пытаетесь открыть файлы расширения ".doc", а не современные файлы расширения ".docx".Подпрограмма VBA, на которую вы ссылаетесь, делает только файлы ".doc".Этот код VBA делает оба:

Function StringEndsWith( _
    ByVal strValue As String, _
    CheckFor As String) As Boolean

  Dim sCompare As String
  Dim lLen As Long

  lLen = Len(CheckFor)
  If lLen > Len(strValue) Then Exit Function
  sCompare = Right(strValue, lLen)
  StringEndsWith = StrComp(sCompare, CheckFor, vbTextCompare) = 0
End Function


Sub ChangeTemplates()
    Dim strDocPath As String
    Dim strTemplateB As String
    Dim strCurDoc As String
    Dim docCurDoc As Document

    ' set document folder path and template strings
    strDocPath = "C:\tmp\"

    ' get first doc - only time need to provide file spec
    strCurDoc = Dir(strDocPath & "*.doc*")

    ' ready to loop (for as long as file found)
    Do While strCurDoc <> ""
        If (StringEndsWith(strCurDoc, ".doc") Or StringEndsWith(strCurDoc, ".docx")) Then
            ' open file
            Set docCurDoc = Documents.Open(FileName:=strDocPath & strCurDoc)
            ' change the template back to Normal
            docCurDoc.AttachedTemplate = ""
            ' save and close
            docCurDoc.Close wdSaveChanges
        End If
        ' get next file name
        strCurDoc = Dir
    Loop
    MsgBox "Finished"
End Sub
1 голос
/ 08 февраля 2017

долгое время между ответами, но может быть полезно для других.Если у вас есть доступ к VBE документа Word [Alt F11], и вы хотите удалить ссылку, перейдите в «Инструменты / Ссылки» [верхнее меню] и отмените ее выбор из списка файлов ссылок.У меня была похожая проблема, когда шаблон больше не существовал, но на него все еще «ссылались» в окне проекта, поэтому я сделал выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...