Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Если число страниц больше 2х то удалить файл, массовая проверка 
:(
    Опции темы
nikki4
Дата 29.5.2015, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 27.10.2009

Репутация: нет
Всего: нет



Здравствуйте. Просьба помочь сделать следующее:

если число страниц в ворде больше Х (допустим 3), тогда удалить файл.
Причем надо сделать это массово.

Путем помощи на форумах и гугла удалось вот что найти:

скрипт который обрабатывает пачку файлов docx на удаление ссылок, только сюда вместо удаления ссылок проверку и удаление файла.

Код

With CreateObject("word.application")
  For Each x In CreateObject("scripting.filesystemobject").getfile(wscript.scriptfullname).parentfolder.Files
    If LCase(Mid(x.Name, InStrRev(x.Name, ".") + 1, 4)) = "docx" Then
      With .documents.open(x.Path)
        numDocs = numDocs + 1
 
 //сюда что-то надо вставить для счета страниц и удаления если счет больше указанного числа страниц
        .Range.Fields.Unlink 'Ctrl+A, Ctrl+Shift+F9  
        .Close True 'save changes 
 
      End With
    End If
  Next
  .Quit
End With
wscript.echo "Обработано документов " & numDocs


а вот нашел скрипт по счету числа страниц в файле
Код

Set objWord = CreateObject("Word.Application")
Const wdStatisticPages = 2
Set objDoc = objWord.Documents.Open("C:\Новая папка\имя файла.docx")
 
   if objDoc.ComputeStatistics(wdStatisticPages)>3 then удалить и продолжить проерять следующий файл

   objDoc.Close
   objWord.Quit


как теперь это скрестить?
с путем и названием объектов запутался...

Это сообщение отредактировал(а) nikki4 - 29.5.2015, 01:38
PM MAIL   Вверх
Akina
Дата 29.5.2015, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453



В документе страницы явно существуют только тогда, когда в нём использованы символы, явно начинающие новую страницу (например, page break или разрыв раздела с новой страницы). Если таких символов нет, документ (или содержимое между такими символами, если они есть) делится на страницы в момент вывода, и это деление зависит от характеристик устройства вывода. Т.е. количество страниц запросто может меняться простой сменой дефолтного принтера или формата бумаги.

Задача недоопределена.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
nikki4
Дата 29.5.2015, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 27.10.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 29.5.2015,  09:01)
В документе страницы явно существуют только тогда, когда в нём использованы символы, явно начинающие новую страницу (например, page break или разрыв раздела с новой страницы). Если таких символов нет, документ (или содержимое между такими символами, если они есть) делится на страницы в момент вывода, и это деление зависит от характеристик устройства вывода. Т.е. количество страниц запросто может меняться простой сменой дефолтного принтера или формата бумаги.

Задача недоопределена.

objDoc.ComputeStatistics(wdStatisticPages) работает корректно (там в исходнике был вывод сообщения с числом страниц и совпадало).

Код

Set objWord = CreateObject("Word.Application")
Const wdStatisticPages = 2
Set objDoc = objWord.Documents.Open("C:\Новая папка\имя файла.docx")
 
   msgbox objDoc.ComputeStatistics(wdStatisticPages)
   objDoc.Close
   objWord.Quit


по поводу размера бумаги и принтера. по умолчанию везде а4 книжная, а дома у меня вообще принтера нет.
никаких явных разрывов в странице нет.
Есть верхний и нижний колонтитул разве что, в частности где указано "страница 1 из ..."
но я только что создал тестовый документ из 3х страниц, где даже их нет и все считает.
Впрочем в данном случае и не нужна точность, просто надо каким-то образом отделить длинные документы от коротких.
Чтобы уже потом в ручную обработать длинные.
По рамеру файла не подойдет, так как там есть и таблицы всякие и потому больший по объему файл, может быть меньше  по количеству страниц.
Вот и задумался,  наверняка же можно это посчитать и даже нашел скрипт, но как сделать чтобы он пачкой все проверил, а не 1 конкретно.

нашел вот кстати .DeleteFile, но там надо указать путь файла .. а тут много файлов...


Это сообщение отредактировал(а) nikki4 - 30.5.2015, 02:24

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  test.rar 8,82 Kb
PM MAIL   Вверх
nikki4
Дата 30.5.2015, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 27.10.2009

Репутация: нет
Всего: нет



Задача решена, решение:
Код

With CreateObject("word.application")
  For Each x In CreateObject("scripting.filesystemobject").getfile(wscript.scriptfullname).parentfolder.Files
    If LCase(Mid(x.Name, InStrRev(x.Name, ".") + 1, 4)) = "docx" Then
      With .documents.open(x.Path)
        np = .ComputeStatistics(2)  '2=wdStatisticPages
        .Close False                'don't save changes         
      End With
      if np < 2 then x.delete: numDel = numDel + 1
    End If
  Next
  .Quit
End With
wscript.echo "Удалено документов " & numDel



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.1072 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.