1

Тема: Подсчёт файлов в папке

Здравствуйте. Помогите пожалуйста!. Хочу создать пользовательский шаблон Word. В шаблоне есть таблица в одну строку, в таблице есть ячейка, где должен указываться порядковый номер документа. Нужен макрос, который подсчитает количество файлов определённого формата и в определённой папке и выведет сумму в ячейку для порядкового номера. Английский не знаю, в программировании - ноль. Нашёл подходящий макрос в интернете - только для Excel. Как переделать - естественно не знаю. И ещё просьба. Пожалуйста, укажите в программном коде место (строку) где можно поменять формат файла, путь к папке и ячейку, куда выводить сумму файлов. Может быть придётся изменять шаблон. Спасибо.

Post's attachments

Образец.docx 15.16 Кб, 1 скачиваний с 2017-02-16 

You don't have the permssions to download the attachments of this post.

2

Re: Подсчёт файлов в папке

rbgjdew пишет:

Здравствуйте. Помогите пожалуйста! Спасибо.

Sub Подсчёт()
Dim oFSO, oFolder As Object
Dim sFolder As String
Dim i%
    sFolder = "C:\Users\client606_18\Desktop\Resources" 'Указываем путь к папке(полностью и в таких же кавычках)
    Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FolderExists(sFolder) Then
    Set oFolder = oFSO.GetFolder(sFolder)
    For Each oFile In oFolder.Files
    sName = oFile.Name
        If InStr(sName, ".doc") Then i = i + 1 'В этой строке указан формат документа ".doc" если надо другой - поменяйте на
                                                'нужный. Если надо два или больше, то перед Then, после скобки добавляете строку
                                                ' or  InStr(sName, ".docm") и указываете нужный формат
    Next oFile
End If
ActiveDocument.Tables(1).Cell(1, 1).Range.Text = i 'Здесь указываем ячеку таблицы Сell(Номер строки, номер столбца). Сейчас это параметры "1, 1"
End Sub

внешняя ссылка

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3

Re: Подсчёт файлов в папке

Fck_This Спасибо большущее!!!  big_smile  Мир не без добрых людей! Буду пробовать делать шаблон.

4

Re: Подсчёт файлов в папке

Fck_This пишет:
rbgjdew пишет:

Здравствуйте. Помогите пожалуйста! Спасибо.

Sub Подсчёт()
Dim oFSO, oFolder As Object
Dim sFolder As String
Dim i%
    sFolder = "C:\Users\client606_18\Desktop\Resources" 'Указываем путь к папке(полностью и в таких же кавычках)
    Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FolderExists(sFolder) Then
    Set oFolder = oFSO.GetFolder(sFolder)
    For Each oFile In oFolder.Files
    sName = oFile.Name
        If InStr(sName, ".doc") Then i = i + 1 'В этой строке указан формат документа ".doc" если надо другой - поменяйте на
                                                'нужный. Если надо два или больше, то перед Then, после скобки добавляете строку
                                                ' or  InStr(sName, ".docm") и указываете нужный формат
    Next oFile
End If
ActiveDocument.Tables(1).Cell(1, 1).Range.Text = i 'Здесь указываем ячеку таблицы Сell(Номер строки, номер столбца). Сейчас это параметры "1, 1"
End Sub

внешняя ссылка

Добрый день. Скопировал код, вставил в окно кода, Изменил путь,формат,номер столбца, сохранил файл. Код не работает. Пишет: "Запрашиваемый номер семейства не существует" Подскажите пожалуйста, что я неправильно сделал?

Post's attachments

Снимок VBA.jpg 70.81 Кб, 1 скачиваний с 2017-02-17 

You don't have the permssions to download the attachments of this post.

5

Re: Подсчёт файлов в папке

Добавочный снимок к предыдущему сообщению

Post's attachments

Запуск в VBA.jpg 228.65 Кб, 1 скачиваний с 2017-02-17 

You don't have the permssions to download the attachments of this post.

6

Re: Подсчёт файлов в папке

rbgjdew пишет:

Подскажите пожалуйста, что я неправильно сделал?

Попробуйте для начала следующее
1. Вместо строки
     Dim oFSO, oFolder As Object
   укажите
     Dim oFSO as Object, oFile as Object, oFolder as Object
     Dim sName as String
2. В VBA-проекте (Alt+F11) выберите Tools > References и добавьте в список подключаемых ресурсов ссылку на "Microsoft Scripting Runtime"

7

Re: Подсчёт файлов в папке

yshindin пишет:
rbgjdew пишет:

Подскажите пожалуйста, что я неправильно сделал?

Попробуйте для начала следующее
1. Вместо строки
     Dim oFSO, oFolder As Object
   укажите
     Dim oFSO as Object, oFile as Object, oFolder as Object
     Dim sName as String
2. В VBA-проекте (Alt+F11) выберите Tools > References и добавьте в список подключаемых ресурсов ссылку на "Microsoft Scripting Runtime"

Сделал как вы сказали. Всё рано: Run-time error '5941': Запрашиваемый номер семейства не существует.

8

Re: Подсчёт файлов в папке

Декларация особо не поменяет ничего. А вот библиотеку подключите.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

9

Re: Подсчёт файлов в папке

Fck_This пишет:

Декларация особо не поменяет ничего. А вот библиотеку подключите.

Прошу прощения. Подскажите пожалуйста, что за библиотека

10

Re: Подсчёт файлов в папке

Fck_This пишет:

Декларация особо не поменяет ничего. А вот библиотеку подключите.

Переменная oFile была не объявлена, поэтому ее тип по умолчанию Variant, что может противоречить выражению oFile.Name

Чтобы подключить "Microsoft Scripting Runtime", откройте редактор VBA, на вкладке Tools выберите References (привожу пример для английского варианта интерфейса), далее в списке ресурсов проекта отметьте флажок  "Microsoft Scripting Runtime", сохраните изменение.

Post's attachments

SelectingMicrosoftScriptingRuntime.png 89 Кб, 1 скачиваний с 2017-02-17 

You don't have the permssions to download the attachments of this post.

11

Re: Подсчёт файлов в папке

yshindin пишет:
Fck_This пишет:

Декларация особо не поменяет ничего. А вот библиотеку подключите.

Переменная oFile была не объявлена, поэтому ее тип по умолчанию Variant, что может противоречить выражению oFile.Name

Чтобы подключить "Microsoft Scripting Runtime", откройте редактор VBA, на вкладке Tools выберите References (привожу пример для английского варианта интерфейса), далее в списке ресурсов проекта отметьте флажок  "Microsoft Scripting Runtime", сохраните изменение.

sad  Я сделал как вы сказали. Я нашёл эту библиотеку, поставил флажок, даже переместил её (библиотеку) наверх, она сейчас рядышком с уже отмеченными библиотеками (самая нижняя), нажал OK, сохранил файл.

Post's attachments

Библиотеки.jpg 89.99 Кб, файл не был скачан. 

You don't have the permssions to download the attachments of this post.

12

Re: Подсчёт файлов в папке

rbgjdew пишет:
yshindin пишет:
Fck_This пишет:

Декларация особо не поменяет ничего. А вот библиотеку подключите.

Переменная oFile была не объявлена, поэтому ее тип по умолчанию Variant, что может противоречить выражению oFile.Name

Чтобы подключить "Microsoft Scripting Runtime", откройте редактор VBA, на вкладке Tools выберите References (привожу пример для английского варианта интерфейса), далее в списке ресурсов проекта отметьте флажок  "Microsoft Scripting Runtime", сохраните изменение.

sad  Я сделал как вы сказали. Я нашёл эту библиотеку, поставил флажок, даже переместил её (библиотеку) наверх, она сейчас рядышком с уже отмеченными библиотеками (самая нижняя), нажал OK, сохранил файл.

yshindin Я видимо неправильно разъяснил в предыдущем сообщении. Я подключил библиотеку сразу-же, когда редактировал макрос согласно вашим первым инструкциям.

13

Re: Подсчёт файлов в папке

rbgjdew пишет:

Я сделал как вы сказали.

Я проверил - макрос ругается на таблицу, которой нет в документе, т.е., ругается на предпоследнюю строку кода:

ActiveDocument.Tables(1).Cell(1, 1).Range.Text = i 'Здесь указываем ячеку та 

Именно в эту таблицу по замыслу автора надо поместить результат - число файлов в заданной папке.
Добавьте таблицу в конец документа ))

14

Re: Подсчёт файлов в папке

yshindin пишет:
rbgjdew пишет:

Я сделал как вы сказали.

Я проверил - макрос ругается на таблицу, которой нет в документе, т.е., ругается на предпоследнюю строку кода:

ActiveDocument.Tables(1).Cell(1, 1).Range.Text = i 'Здесь указываем ячеку та 

Именно в эту таблицу по замыслу автора надо поместить результат - число файлов в заданной папке.
Добавьте таблицу в конец документа ))

Удалил весь текст после таблицы, даже просмотрел и удалил непечатаемые знаки, запустил макрос из редактора - то-же самое. ошибка - 5941

15

Re: Подсчёт файлов в папке

rbgjdew пишет:

Удалил весь текст после таблицы, даже просмотрел и удалил непечатаемые знаки, запустил макрос из редактора - то-же самое. ошибка - 5941

Вот мой пример (в прицепе).
Выложите ваш документ, пжл, я посмотрю.

Post's attachments

File_count.docm 37.8 Кб, 1 скачиваний с 2017-02-17 

You don't have the permssions to download the attachments of this post.

16

Re: Подсчёт файлов в папке

yshindin пишет:
rbgjdew пишет:

Удалил весь текст после таблицы, даже просмотрел и удалил непечатаемые знаки, запустил макрос из редактора - то-же самое. ошибка - 5941

Вот мой пример (в прицепе).
Выложите ваш документ, пжл, я посмотрю.

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

17

Re: Подсчёт файлов в папке

Не знаю, нужно или нет - опишу подробно как создавался файл пример (см. пример в начале темы). Сначала по правому краю нарисовал таблицу ( не вставил "Вставка - таблица и т.д.) а именно нарисовал через это-же меню. Сл. нарисовал таблицу по центру (одна строка, пять столбцов), в первом столбце - обычный текст, во втором столбце - создавал выпадающий список, потом удалил, в третьем столбце - вставлял закладку (пример то-же нашёл на форуме, при открытии файла добавляется по 1 к цифре в таблице) потом закладку то-же удалил. В четвёртом столбце - опять обычный ткст. В пятом - вордовская дата с автом. обновлением. Она так и осталась в таблице. Когда чистил документ, почему-то не с первого раза удалялись таблицы. Может это всё как-то повлияло на то, что макрос не работал?

18

Re: Подсчёт файлов в папке

rbgjdew пишет:

Может это всё как-то повлияло на то, что макрос не работал?

Сложно сказать. По характеру сообщения об ошибке я понял, что объект не может быть идентифицирован и предположил, что по факту в документе нет ни одной таблицы.

Сам я таблицы создаю через макросы. Один макрос создает заготовку регулярной таблицы (т.е., с заголовком и шапкой) на три столбца, другой - форматирующую таблицу (без заголовка и с прозрачными границами ячеек) на два столбца. Еще у меня есть макросы добавления последнего столбца в таблицу и удаления последнего столбца. Так что рабочую таблицу делаю быстро через горячие клавиши, привязанные к макросам.

19

Re: Подсчёт файлов в папке

Здравствуйте. Разобрался, почему макрос не работал. Методом "тыка". В документе (см. образец в начале темы) две таблицы. В коде, (спасибо Fck_This) изначально указана Tables(1).Cell(1, 1), то есть табл.1 ячейка 1 в строке 1. Я же (в отредактированном коде) указал для ввода суммы файлов  третью ячейку во второй таблице, вот он (VBA) и ругался. Исправил код Tables(2).Cell(1, 3) и сейчас всё работает как надо. Ещё раз всем большое спасибо!

20

Re: Подсчёт файлов в папке

Ещё просьба, подскажите пожалуйста, как вставлять в сообщение нужный текст из предыдущих сообщений. Я просто мышкой выделяю, копирую и вставляю. Получается не как у вас.

21

Re: Подсчёт файлов в папке

rbgjdew пишет:

Ещё просьба, подскажите пожалуйста, как вставлять в сообщение нужный текст из предыдущих сообщений. Я просто мышкой выделяю, копирую и вставляю. Получается не как у вас.

Надо в том предыдущем сообщении щелкнуть на ссылке "Цитировать". Затем в поле редактирования удалить ненужный текст и добавить нужный )). При этом следить за парностью ссылок "quote" и "/quote". Текущий результат редактирования можно посмотреть по ссылке "Предпросмотр".

22

Re: Подсчёт файлов в папке

Надо в том предыдущем сообщении щелкнуть на ссылке "Цитировать". Затем в поле редактирования удалить ненужный текст и добавить нужный )). При этом следить за парностью ссылок "quote" и "/quote". Текущий результат редактирования можно посмотреть по ссылке "Предпросмотр".

smile  Спасибо!

23

Re: Подсчёт файлов в папке

yshindin пишет:

Надо в том предыдущем сообщении щелкнуть на ссылке "Цитировать". Затем в поле редактирования удалить ненужный текст и добавить нужный )). При этом следить за парностью ссылок "quote" и "/quote". Текущий результат редактирования можно посмотреть по ссылке "Предпросмотр".

Так кажется правильней.