Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Долго открываются документы MS Word. (http://forum.oszone.net/showthread.php?t=207513)

Budeniy 25-05-2011 08:09 1682148

Долго открываются документы MS Word.
 
Есть 2 компа, к одному подключен принтер, но сейчас за ним никто не сидит. Проблема в том, что если этот комп выключен, то на втором вордовские файлы очень долго открываются. Если отключить сеть, то все нормализуется. Если выключить принтер, то долго грузится только 1 раз для каждого документа, а все последующие загрузки этого дока проходят быстро. Если включить комп с принтером, то все грузится быстро. Если отключить службу "Очередь печати" то тоже все норм.
Вопрос: почему?

Delirium 25-05-2011 08:49 1682153

Собственно ты сам ответил на свой вопрос. Потому, что Word пытается достучаться до отключенной машины и пока не пройдет таймаут подключения, будет тормозить. Вариант решения - установить левый виртуальный принтер и назначить его принтером по умолчанию. А для печати вручную выбирать нужный принтер.

yurfed 25-05-2011 08:57 1682156

Цитата:

Цитата Budeniy
то долго грузится только 1 раз для каждого документа, а все последующие загрузки этого дока проходят быстро. »

Это нормально.
Цитата:

Цитата Budeniy
Проблема в том, что если этот комп выключен, то на втором вордовские файлы очень долго открываются. »

Возможно ищет по истории открытых файлов.
Цитата:

Цитата Budeniy
Если отключить сеть, то все нормализуется. »

Всё верно. Не лезет в сеть за историей.
Цитата:

Цитата Budeniy
Если отключить службу "Очередь печати" то тоже все норм. »

Очистите папку \WINDOWS\system32\spool\PRINTERS

Budeniy 25-05-2011 10:50 1682230

Цитата:

Цитата Delirium
Потому, что Word пытается достучаться до отключенной машины »

Мне вот интересно, зачем он это делает?

Brainiacs 01-02-2012 23:39 1849715

Вложений: 1
  • Jan.doc (65.50 KB, скачиваний: 41)
Доброго времени!

Купили сотруднику новый комп, всё лицензионное (Windows 7 Pro и Office 2007). Раньше был Windows XP и Office 2003 (все открывалось быстро), соответственно перенесли все документы на новый комп и теперь все вордовские документы открывают по 20 секунд (только в ворде такая ситуация) Новые документы открываются моментально! Пробовали переустанавливать, тоже самое!

Может кто подскажет в какую сторону копать???? Причем у себя на двух компах проверил, на одном 7 с 2007 на другом XP c 2003, всё тоже самое, по 20 секунд открывает вордовский документ! В Openoffice эти файлы открываются в лёт!!!

И в итоге когда открывается, какой-то странный шрифт пишет - Frutiger 47LightCn!

Подскажите, что где посмотреть????

Кстати, если сеть отключить начинает быстро открываться!!!

With Best Regards
Brainiacs

Petya V4sechkin 02-02-2012 17:14 1850176

Brainiacs, попробуйте рекомендации KB833041.
Выложите лог Process Monitor при открытии файла (меню File -> Save) в архиве на любой файлообменник. Если система 32-битная, сохраните в PML-формате, а если 64-битная - в CSV-формате.

Brainiacs 03-02-2012 10:45 1850681

Petya V4sechkin

Logfile.PML

Fix поставил - тоже самое!
В безопасном режиме - тоже самое!

With Best Regards
Brainiacs

Petya V4sechkin 03-02-2012 21:49 1851232

Brainiacs, в логе попытки открыть шаблон в несуществующей сетевой папке
\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot

Brainiacs 06-02-2012 18:18 1852996

Да точно, разобрался, с вашей Petya V4sechkin помощью, короче шаблон встроен в документ (их кстати много)!

\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot - шаблон,
который он хочет зацепить (мозгов надо много, чтобы так сделать)

Параметры Word -- Надстройки -- Управление -- Шаблоны (перейти) и видем:



Вообщем можно этот путь удалить и всё будет быстро открываться (он под Normal.dot(x) потом открывается)!

Внимание вопрос, а если файлов 1000 (ну их много очень), можно ли сделать, чтобы они под Normal.dot открывались????

Если выделить несколько файлов и нажать свойства, там есть Удаление свойств и личной информации,
но эта фигня не работает, даже на одном файле. Только в самом ворде.



Вторая ссылочка про 2007, последняя рекомендация
(Изменение параметров реестра Windows для местоположения файлов шаблонов пользователя и местоположения файлов общих шаблонов)
Это то что нужно или нет, а то я что-то не очень понимаю???

With Best Regards
Brainiacs

Iska 07-02-2012 08:29 1853341

Цитата:

Цитата Brainiacs
Вообщем можно этот путь удалить и всё будет быстро открываться (он под Normal.dot(x) потом открывается)! »

То есть, когда Вы удаляете данный путь в диалоговом окне и сохраняете документ, то при следующем открытии этого документа там содержится путь к «normal.dotx», так?

Цитата:

Цитата Brainiacs
Внимание вопрос, а если файлов 1000 (ну их много очень), можно ли сделать, чтобы они под Normal.dot открывались???? »

Можно попробовать написать макрос/скрипт. Как Вам удобнее будет указать все эти файлы?

Цитата:

Цитата Brainiacs
Это то что нужно или нет, а то я что-то не очень понимаю??? »

Насколько я понимаю — нет. Ссылка на шаблон уже наличествует в документе.

Brainiacs 07-02-2012 18:12 1853707

Iska

Цитата:

Цитата Iska
То есть, когда Вы удаляете данный путь в диалоговом окне и сохраняете документ, то при следующем открытии этого документа там содержится путь к «normal.dotx», так?

Да, именно так и всё очень быстро открывается. ( Ну он не полный путь пишет конечно, который по умолчанию в случае Office 2007 - "C:\Users\UserName\AppData\Roaming\Microsoft\Шаблоны", а просто Normal.dotm)

Цитата:

Цитата Iska
Можно попробовать написать макрос/скрипт. Как Вам удобнее будет указать все эти файлы?

А как лучше? Может быть по расширению?

With Best Regards
Brainiacs

Iska 07-02-2012 18:48 1853726

Цитата:

Цитата Brainiacs
Да, именно так и всё очень быстро открывается. ( Ну он не полный путь пишет конечно, который по умолчанию в случае Office 2007 - "C:\Users\UserName\AppData\Roaming\Microsoft\Шаблоны", а просто Normal.dotm) »

Спасибо, ясно. Проверил — можно попробовать сделать. Примерный код прост донельзя:
Код:

    With ActiveDocument
        .AttachedTemplate = ""
        .Save
    End With

Уточните следующее…
Цитата:

Цитата Iska
Как Вам удобнее будет указать все эти файлы? »

Я имел в виду:

1) как расположены эти документы:

* в одной папке;
* в нескольких папках;
* в одной папке и вложенных в неё;
* разбросаны произвольно по всему дисковому пространству?

2) как эти документы (с присоединённым шаблоном:
Цитата:

Цитата Petya V4sechkin
\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot »

соотносятся своим расположением с другими документами Word?

3) Данный шаблон единственный (тогда можно перебирать всё подряд, ориентируясь на точное имя шаблона) или может статься, могут быть и другие «тормозящие» документы с иным несуществующим шаблоном?

Проще говоря — каким образом указать эти документы среди прочих файлов наиболее удобным для Вас способом. Вы ведь не будете тысячу раз выбирать в диалоговом окне «Open File» по одному документу ;)?!

Brainiacs 08-02-2012 03:31 1853953

Iska

Цитата:

Цитата Iska
Я имел в виду: 1) как расположены эти документы: * в одной папке; * в нескольких папках; * в одной папке и вложенных в неё; * разбросаны произвольно по всему дисковому пространству?

Собственно, чтобы упростить задачу, я могу собрать их все, в одной папке, они конечно же в свою очередь разбросаны по всяким папкам!!!

Цитата:

Цитата Iska
2) как эти документы (с присоединённым шаблоном:

Безусловно с некоторыми из этих файлов, находятся и нормальные!!!

Цитата:

Цитата Iska
3) Данный шаблон единственный......

А вот этот вариант, я думаю самый правильный, т.к. если найдется документ с другим шаблоном, то в скрипте (как я понимаю)
можно будет заменить имя шаблона на нужное (и мало того использовать его для какого-нибудь другого массового изменений вордовских файлов) !!!!
Так как я не думаю, что найдется ещё один "гений"(P.S. а как бы Вы его назвали, в ПМ))) ) , который в документах предназначенных
не только для внутреннего обмена будет указывать сетевой путь для шаблона (единственное конечно, что он мог несколько шаблонов сделать - ну да ладно)

Ну и к делу: если написание скрипта не очень времязатратно, я бы был очень благодарен Вам (ну и безусловно с меня пиво - уже), если бы Вы помогли решить эту, я бы сказал не проблему, а глупость?!?!

With Best Regards
Brainiacs

Iska 11-02-2012 16:26 1856330

Цитата:

Цитата Brainiacs
Собственно, чтобы упростить задачу, я могу собрать их все, в одной папке, они конечно же в свою очередь разбросаны по всяким папкам!!! »

Раз Вы можете проделать такое — я предложу следующее решение: собрать все пути к потребным файлам в текстовый файл (который уже и будет обрабатывать скрипт/макрос).

Сделать сие можно с помощью какого-либо стороннего файлового менеджера, например, Far Manager'а или Total Commander'а, або с помощью какого-либо расширения контекстного меню, позволяющего скопировать из результатов поиска Windows пути к файлам, например, Open++ или FileMenu Tools и т.п (в случае поиска Windows у меня, к сожалению, в список попадают и документы из zip-архивов).

Одним словом, у Вас должен получиться в итоге текстовый файл в кодировке ANSI примерно такого вида:
Код:

C:\Temp\Hello World.doc


E:\Песочница\0053\kopiya.doc
E:\Песочница\0014\0001\Обзор объекта автоматизации Photoshop.doc

в котором будут находиться пути к потребным документам.

Вот скрипт vbscript:
читать дальше »
Код:

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» путь к Вашему файл-списку с собранными документами и попробуйте.

Brainiacs 14-02-2012 09:22 1858297

Iska

Не работает, что-то скриптик! Файл он открывает, но шаблон не удаляет и не заменяет!
И ещё он когда echo отрабатывает, это ж надо будет на каждый файл "ок" нажимать, иначе он дальше не идет!!!

Пробовал, я .AttachedTemplate вместо "Normal.dotm" --> " ", ворд (visual basic) так делает когда просто стираешь путь к шаблону, но тоже не помогает!
Как-то надо просто удалить путь к шаблоны и сохранить файл, и ворд потом при открытии сам к "Normal.dotm" обратиться!

P.S.

Я надеюсь Вы не против, я разместил Ваш скриптик, ещё на нескольких форумах, для доработки!
Если против, могу удалить?!


With Best Regards
Brainiacs

Iska 14-02-2012 17:11 1858660

Цитата:

Цитата Brainiacs
И ещё он когда echo отрабатывает, это ж надо будет на каждый файл "ок" нажимать, иначе он дальше не идет!!! »

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

cscript.exe //nologo "<Путь к скрипту>"
Цитата:

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

1. А он хоть находит-то документы с шаблоном? То есть пишет хоть иногда «Template found in document [bla-bla-bla]»?
2. Если пишет, то попробуйте следующие варианты:
* именно пустую строку, а не пробел:
Код:

.AttachedTemplate = ""
* полный путь к «Normal.dotm»:
Код:

.AttachedTemplate = "C:\Users\UserName\AppData\Roaming\Microsoft\Шаблоны\Normal.dotm"
подставив вместо «UserName» конкретное значение.

Цитата:

Цитата Brainiacs
Я надеюсь Вы не против, я разместил Ваш скриптик, ещё на нескольких форумах, для доработки!
Если против, могу удалить?! »

Ничуть. Только за. Ибо у меня-то нет Office 2007, я пробую на предыдущей версии.

Brainiacs 15-02-2012 09:54 1859158

Цитата:

Цитата Iska
у меня есть хорошая привычка запускать скрипты в консоли, чего и Вам желаю:

Понял!

Цитата:

Цитата Iska
1. А он хоть находит-то документы с шаблоном? То есть пишет хоть иногда «Template found in document [bla-bla-bla]»?

Да файл он находит, открывает его и закрывает, ничего не меняется (дата изменения не меняется, как будто бы просто - открыл/закрыл)!



пишет только см. скрин

Цитата:

Цитата Iska
2. Если пишет, то попробуйте следующие варианты:

Никакой из вариантов - не работает!

With Best Regards
Brainiacs

Iska 15-02-2012 15:33 1859404

Значит, не находит. Ибо, если бы нашёл — писал бы ещё кроме пути, как я уже сказал выше, следующее:
Цитата:

Template found in document [bla-bla-bla]
Давайте-ка посмотрим, какие на самом деле там прикреплённые шаблоны. Выполните такой скрипт:
Код:

Option Explicit

Dim strDocumentList
Dim strDocument

Dim objFSO
Dim objWord


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


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)
                                        WScript.Echo "  " & .AttachedTemplate
                                       
                                        .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

в виде:
Код:

cscript.exe //nologo "<Путь к скрипту>" >c:\0001.txt
опять указав в «strDocumentList» путь к Вашему списку. Полученный в результате исполнения скрипта файл «c:\0001.txt» упакуйте в архив и прикрепите к сообщению (либо выложите на обменник, а сюда — ссылку).

Brainiacs 21-02-2012 09:23 1863292

Вложений: 2
  • jan.jpg (2.00 KB, скачиваний: 22)
  • 0001.txt (35 bytes, скачиваний: 23)
Цитата:

Цитата Iska
Значит, не находит. Ибо, если бы нашёл — писал бы ещё кроме пути, как я уже сказал выше, следующее:

Да нет, всё он находит, файл открывает (я вижу это т.к. создаётся темповский файл ворда см. аттач) но не меняется дата изменения, такое впечатление, что он его просто закрывает и открывает!!!

Ваш последний скриптик выдаёт следующее:


Только там не normal.dotm, а \\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot!!!!!

With Best Regards
Brainiacs

Iska 21-02-2012 09:33 1863297

Цитата:

Цитата Brainiacs
Да нет, всё он находит, файл открывает (я вижу это т.к. создаётся темповский файл ворда см. аттач) но не меняется дата изменения, такое впечатление, что он его просто закрывает и открывает!!! »

Естественно. Скрипт не будет ничего менять-сохранять, пока ему не попадётся документ с искомым присоединённым шаблоном.

Цитата:

Цитата Brainiacs
Только там не normal.dotm, а \\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot!!!!! »

Brainiacs, вот я и хочу увидеть этот самый:
Цитата:

Цитата Brainiacs
\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot »

во вложенном файле «0001.txt». Но не вижу.

«Натравите» скрипт из #18 на полный список документов, а не на один-единственный документ.

Brainiacs 21-02-2012 10:26 1863312

Цитата:

Цитата Iska
«Натравите» скрипт из #18 на полный список документов, а не на один-единственный документ.

Так это ж, если он один файл открывает порядка 30 секунд, так весь список, я до послезавтра буду открывать...

Может попробовать на нескольких документах?
Если скрипт не обрабатывает даже один файл, где точно НЕ normal.dotm, а присоединённый шаблон!

Цитата:

Цитата Iska
Естественно. Скрипт не будет ничего менять-сохранять, пока ему не попадётся документ с искомым присоединённым шаблоном.

Так этот документ точно с искомым присоединённым шаблоном!!!!!!

P.S.
Я конечно запущу скриптик, пусть работает!

With Best Regards
Brainiacs

Iska 21-02-2012 11:19 1863346

Цитата:

Цитата Brainiacs
Может попробовать на нескольких документах? »

Давайте. И чтоб хотя бы в одном из них заведомо был тот самый шаблон, который ищем.

Brainiacs 22-02-2012 10:14 1864112

Вложений: 1
  • 1.txt (469 bytes, скачиваний: 37)
Цитата:

Цитата Iska
Давайте. И чтоб хотя бы в одном из них заведомо был тот самый шаблон, который ищем.

Ну собственно я взял 10 файлов из них 2 нормальных (быстро открываются и в шаблонах стоит Normal.dotm) остальные с шаблоном:

Цитата:

\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot
скиптик записал в файл, что они все с Normal.dotm!!!!

Такое впечатление, что он проверяет какой вообще шаблон используется по умолчанию, а не в документах!!!

With Best Regards
Brainiacs

Iska 23-02-2012 12:29 1865015

Brainiacs, подтверждаю Ваши выводы. При недоступности присоединённого шаблона Microsoft Word в свойстве «.AttachedTemplate» возвращает «Normal.dot/Normal.dotm». Если бы я сразу сумел выделить время для полного моделирования Вашей ситуации, Вам не пришлось бы столько мучаться. Приношу Вам свои извинения.

Давайте попробуем так:
читать дальше »
Код:

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



Опять же, в:
Код:

strDocumentList = "E:\Песочница\0120\DocumentList.txt"
указываете путь к своему списку документов.

P.S. Если перед запуском скрипта Вы отключите все сетевые соединения на машине — Word не будет ждать по 30 секунд ;).

Brainiacs 24-02-2012 16:43 1865783

УРААА!!!!

Большущее спасибо!

Всё заработало!!!

Цитата:

Цитата Iska
Вашей ситуации, Вам не пришлось бы столько мучаться. Приношу Вам свои извинения.

Да ничего страшного, самое главное, что мы, то есть Вы решили задачу!!!!!!!

Цитата:

Цитата Iska
P.S. Если перед запуском скрипта Вы отключите все сетевые соединения на машине — Word не будет ждать по 30 секунд .

Да, я в курсе, правда не получиться, так как я удаленно делаю человеку, и у него эти файлы как сетевой диск подключены, но ничего уже треть сделалось!!!

Куда высылать пиво пишем в личку - ОБЯЗАТЕЛЬНО!

With Best Regards
Brainiacs

Iska 24-02-2012 16:59 1865797

Цитата:

Цитата Brainiacs
Да ничего страшного, самое главное, что мы, то есть Вы решили задачу!!!!!!! »

Ну, решил-то её, не будем забывать, Petya V4sechkin. Я всего лишь помог с ликвидацией последствий.

Цитата:

Цитата Brainiacs
Куда высылать пиво пишем в личку - ОБЯЗАТЕЛЬНО! »

Спросите у Администрации — может, им сгодится ;) ?!

Brainiacs 24-02-2012 17:14 1865811

Цитата:

Цитата Iska
Ну, решил-то её, не будем забывать, Petya V4sechkin. Я всего лишь помог с ликвидацией последствий.

Точно, я извиняюсь за забывчивость в пылу радости решения задачи, большущее спасибо Petya V4sechkin!!!

Цитата:

Цитата Iska
Спросите у Администрации — может, им сгодится ?!

Нет, так не пойдет и это не обсуждается, вообщем так или иначе, но благодарность настигнет Вас с Petya V4sechkin!!!!!!!

With Best Regards
Brainiacs

irf 05-08-2015 08:31 2537141

Добрый день! Iska, нужна помощь!
Я попробовал Ваш скрипт для восстановления Normal.dotm. Он работает только с документами 2007 офиса (docx), а для документов сделанных в 2003 офисе (doc) можете сделать? Очень надо. Заранее благодарен

Iska 05-08-2015 09:14 2537156

Цитата:

Цитата irf
Я попробовал Ваш скрипт »

Какой именно? Этот?

Цитата:

Цитата irf
для восстановления Normal.dotm. »

Это не совсем так.

Цитата:

Цитата irf
Он работает только с документами 2007 офиса (docx),»

Это не так. Скрипт вообще не «смотрит» на тип файлов, перечисленных в списке, подразумевая, что все они — документы Word (не важно какой версии).

Единственное, что нужно — заменить строку с именем шаблона:
Код:

                                                .AttachedTemplate = "Normal.dotm"
на:
Код:

                                                .AttachedTemplate = "Normal.dot"
Ну, и, естественно, в:
Код:

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"

должен быть указан путь к Вашему списку документов и путь к Вашему отсутствующему шаблону, соответственно.

P.S. Не проверялось.

vovka_bel 25-11-2019 09:53 2897872

Здравствуйте.
Подскажите как нужно исправить скрипт чтобы он смотрел все фаилы в каталоге а не только список из фаила?

Iska 25-11-2019 15:20 2897932

Цитата:

Цитата vovka_bel
Подскажите как нужно исправить скрипт »

vovka_bel, а Вы не обратили внимание на сообщение выше Вашего? Я могу повторить:
Цитата:

Цитата Iska
Какой именно? »


vovka_bel 25-11-2019 16:22 2897938

Option Explicit

Const wdDialogToolsTemplates = &H57

Dim strDocumentList
Dim strBadTemplate
Dim strDocument
Dim strTemplate

Dim objFSO
Dim objWord




strDocumentList = ""
strBadTemplate = ""


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

Iska 25-11-2019 23:33 2897980

Ссылку, просто ссылку на сообщение со скриптом привести надо было. Или номер сообщения привести. Ух…

Теперь идём дальше.
Цитата:

Цитата vovka_bel
…чтобы он смотрел все фаилы в каталоге »

Зачем «все»? Давайте ограничимся расширением .docx.

Пробуйте (не проверялось):
Скрытый текст
Код:

Option Explicit

Const wdDialogToolsTemplates = &H57


Dim strBadTemplate
Dim strSourceFolder

Dim objFSO
Dim objFile

Dim objWord
Dim strTemplate


strBadTemplate = "\\fileserver2\USERS$\sba\My Documents\Brand Manual\Brand Manual\templates Norit russia\Templates NV\Norit NV - brief - ENG, V060403.dot"

If WScript.Arguments.Count = 1 Then
        Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
       
        strSourceFolder = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0))
       
        If objFSO.FolderExists(strSourceFolder) Then
                Set objWord = Nothing
               
                For Each objFile In objFSO.GetFolder(strSourceFolder).Files
                        If StrComp(objFSO.GetExtensionName(objFile.Name), "docx", vbTextCompare) = 0 Then
                                If objWord Is Nothing Then
                                        Set objWord = WScript.CreateObject("Word.Application")
                                End If
                               
                                WScript.Echo objFile.Path
                               
                                With objWord.Documents.Open(objFile.Path)
                                        strTemplate = objWord.Dialogs(wdDialogToolsTemplates).Template
                                       
                                        If StrComp(strTemplate, strBadTemplate, vbTextCompare) = 0 Then
                                                WScript.Echo " Template found in document [" & objFile.Path & "]"
                                               
                                                .AttachedTemplate = "Normal.dotm"
                                                .Save
                                        End If
                                       
                                        .Close
                                End With
                        Else
                                ' Nothing to do
                        End If
                Next
               
                If Not objWord Is Nothing Then
                        objWord.Quit
                       
                        Set objWord = Nothing
                End If
        Else
                WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
                WScript.Quit 2
        End If
       
        Set objFSO = Nothing
Else
        WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
        WScript.Quit 1
End If

WScript.Quit 0


vovka_bel 26-11-2019 12:42 2898026

запускать нужно в том каталоге где все фаилы лежат которые нужно проверить?
Или как указать в каком каталоге смотреть скрипту?

Iska 26-11-2019 18:18 2898069

Цитата:

Цитата vovka_bel
Или как указать в каком каталоге смотреть скрипту? »

Аргументом скрипта. Или можете просто перетащить потребный каталог на скрипт/ярлык, указывающий на скрипт, в Проводнике.

rsrara 16-12-2019 13:35 2900689

спасибо)

a3270 27-12-2019 19:04 2902540

Добрый день! Купили дочери новый ноутбук и через некоторое время возникла такая проблема. Каким-то образом на компьютере оказались установлены 2 пакета Microsoft Office: один - Microsoft Office 365 -ru -ru, второй - Microsoft Office профессиональный плюс 2010. При открытии файлов word, excel, powerpoint сначала идёт обращение к 1-му пакету и происходит это очень долго. Второй можно запустить только принудительно. Как всё привести в обычное состояние, то есть убрать совсем первый пакет, а второй заставить работать автоматически. Просто удалить из списка загруженных программ? Посоветуйте. Не знаю, почему, но если несколько задач подключаешь, то работа тоже медленная, в том числе открытие страниц в Интернете. А характеристики неплохие, вроде всё должно летать. Заранее благодарю. Алексей.

Iska 28-12-2019 14:10 2902645

a3270, нет никакой необходимости создавать одинаковые сообщения в разных темах.


Время: 17:54.

Время: 17:54.
© OSzone.net 2001-