PDA

Показать полную графическую версию : [решено] Долго открываются документы MS Word.


Страниц : 1 [2]

Brainiacs
21-02-2012, 10:26
«Натравите» скрипт из #18 на полный список документов, а не на один-единственный документ.

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

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

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

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

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

With Best Regards
Brainiacs

Iska
21-02-2012, 11:19
Может попробовать на нескольких документах? »
Давайте. И чтоб хотя бы в одном из них заведомо был тот самый шаблон, который ищем.

Brainiacs
22-02-2012, 10:14
Давайте. И чтоб хотя бы в одном из них заведомо был тот самый шаблон, который ищем.

Ну собственно я взял 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
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
УРААА!!!!

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

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

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

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

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

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

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

With Best Regards
Brainiacs

Iska
24-02-2012, 16:59
Да ничего страшного, самое главное, что мы, то есть Вы решили задачу!!!!!!! »
Ну, решил-то её (http://forum.oszone.net/post-1851232.html#post1851232), не будем забывать, Petya V4sechkin. Я всего лишь помог с ликвидацией последствий.

Куда высылать пиво пишем в личку - ОБЯЗАТЕЛЬНО! »
Спросите у Администрации — может, им сгодится ;) ?!

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

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

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

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

With Best Regards
Brainiacs

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

Iska
05-08-2015, 09:14
Я попробовал Ваш скрипт »
Какой именно? Этот (http://forum.oszone.net/post-1865015.html#post1865015)?

для восстановления Normal.dotm. »
Это не совсем так.

Он работает только с документами 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
Здравствуйте.
Подскажите как нужно исправить скрипт чтобы он смотрел все фаилы в каталоге а не только список из фаила?

Iska
25-11-2019, 15:20
Подскажите как нужно исправить скрипт »
vovka_bel, а Вы не обратили внимание на сообщение выше Вашего? Я могу повторить:
Какой именно? »

vovka_bel
25-11-2019, 16:22
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
Ссылку, просто ссылку на сообщение со скриптом привести надо было. Или номер сообщения привести. Ух…

Теперь идём дальше.
…чтобы он смотрел все фаилы в каталоге »
Зачем «все»? Давайте ограничимся расширением .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
запускать нужно в том каталоге где все фаилы лежат которые нужно проверить?
Или как указать в каком каталоге смотреть скрипту?

Iska
26-11-2019, 18:18
Или как указать в каком каталоге смотреть скрипту? »
Аргументом скрипта. Или можете просто перетащить потребный каталог на скрипт/ярлык, указывающий на скрипт, в Проводнике.

rsrara
16-12-2019, 13:35
спасибо)

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

Iska
28-12-2019, 14:10
a3270, нет никакой необходимости создавать одинаковые сообщения в разных темах.




© OSzone.net 2001-2012