1 (изменено: alexii, 2012-02-22 08:30:03)

Тема: WSH: Удалить путь к шаблон или заменить на шаблон по умолчанию

Доброго времени!

А помогите доработать скриптик (не мои):

Option Explicit

Dim strDocumentList
Dim strBadTemplate
Dim strDocument

Dim objFSO
Dim objWord


strDocumentList = "E:\Песочница\0116\DocumentList.txt"
strBadTemplate  = "\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot"


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strDocumentList) Then
    Set objWord = WScript.CreateObject("Word.Application")
    
    With objFSO.OpenTextFile(strDocumentList)
        Do Until .AtEndOfStream
            strDocument = .ReadLine()
            
            If objFSO.FileExists(strDocument) Then
                WScript.Echo strDocument
                
                With objWord.Documents.Open(strDocument)
                    If .AttachedTemplate = strBadTemplate Then
                        WScript.Echo "  Template found in document [" & strDocument & "]"
                        
                        .AttachedTemplate = "Normal.dotm"
                        .Save
                    End If
                    
                    .Close
                End With
            Else
                WScript.Echo "Document [" & strDocument & "] not found"
            End If
        Loop
        
        .Close
    End With
    
    objWord.Quit
    
    Set objWord = Nothing
Else
    WScript.Echo "Document list [" & strDocumentList & "] not found"
End If

Set objFSO = Nothing

WScript.Quit 0
strDocumentList = "E:\Песочница\0116\DocumentList.txt"

в этом файлике список путей к файлам ворд, созданный TotalCommander'ом:

.........
Z:\CDM\anketa_k.doc
Z:\CDM\pravil_karta_scheta.doc
..............
strBadTemplate

это шаблон который встроен в вордовские документы (таких доков много)

Задача: удалить путь к шаблон или заменить на шаблон по умолчанию (в 1283 документах)

Не работает, что-то скриптик! Файл он открывает, но шаблон не удаляет и не заменяет!

.AttachedTemplate =

Пробовал подставлять и пробел и просто пустым оставлять, и полный путь  к Normal.dotm - не работает!

With Best Regards
Brainiacs

2

Re: WSH: Удалить путь к шаблон или заменить на шаблон по умолчанию

Brainiacs, укажите в названии темы язык скриптов согласно правилам форума.

3

Re: WSH: Удалить путь к шаблон или заменить на шаблон по умолчанию

А сообщение после сравнения по команде:


If .AttachedTemplate = strBadTemplate Then
WScript.Echo "  Template found in document [" & strDocument & "]"

выводится или нет?

WBR. Roman

4

Re: WSH: Удалить путь к шаблон или заменить на шаблон по умолчанию

Это «тот самый вопрос». Автор утверждает, что такой присоединённый шаблон в некоторых документах есть, однако же по выполнению скрипта этого нигде не видно.

Пока договорились на то, что он выполнит (другим скриптом) опрос нескольких документов на предмет вывода имени присоединённого шаблона (где он заведомо присутствует) и выложит результаты. Так что — пока жду.

5 (изменено: Brainiacs, 2012-02-24 17:16:48)

Re: WSH: Удалить путь к шаблон или заменить на шаблон по умолчанию

Большущее спасибо to Petya V4sechkin и alexii aka Iska aka хорошие люди)))

Публикую рабочий скриптик!!!

Option Explicit

Const wdDialogToolsTemplates = &H57

Dim strDocumentList
Dim strBadTemplate
Dim strDocument
Dim strTemplate

Dim objFSO
Dim objWord


strDocumentList = "E:\Песочница\0120\DocumentList.txt"
strBadTemplate  = "\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot"


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strDocumentList) Then
    Set objWord = WScript.CreateObject("Word.Application")
    
    With objFSO.OpenTextFile(strDocumentList)
        Do Until .AtEndOfStream
            strDocument = .ReadLine()
            
            If objFSO.FileExists(strDocument) Then
                WScript.Echo strDocument
                
                With objWord.Documents.Open(strDocument)
                    strTemplate = objWord.Dialogs(wdDialogToolsTemplates).Template
                    
                    If strTemplate = strBadTemplate Then
                        WScript.Echo "  Template found in document [" & strDocument & "]"
                        
                        .AttachedTemplate = "Normal.dotm"
                        .Save
                    End If
                    
                    .Close
                End With
            Else
                WScript.Echo "Document [" & strDocument & "] not found"
            End If
        Loop
        
        .Close
    End With
    
    objWord.Quit
    
    Set objWord = Nothing
Else
    WScript.Echo "Document list [" & strDocumentList & "] not found"
End If

Set objFSO = Nothing

WScript.Quit 0

With Best Regards
Brainiacs