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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск docx файлов в каталоге и подкоталогах VBA 
V
    Опции темы
Veve
Дата 25.3.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

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



Добрый вечер,
Нужно найти все файлы *.docx в папке и её подпапках. Excel 2007. VBA
Заранее спасибо.
PM MAIL ICQ Skype MSN   Вверх
Akina
Дата 25.3.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



FileSystemObject.Folder.Files


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

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



А можно немного с примерчиком...  smile  А то как-то .. с файлами во вложенных папках не получается.. 

Это сообщение отредактировал(а) Veve - 25.3.2009, 23:06
PM MAIL ICQ Skype MSN   Вверх
Akina
Дата 25.3.2009, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Veve @  26.3.2009,  00:01 Найти цитируемый пост)
с файлами во вложенных папках не получается

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

Добавлено через 1 минуту и 44 секунды
А можешь тупо сделать 

Код

shell "dir /s *.docx > docx.txt"


и распарсить полученный файл  smile 


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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

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



Не рекурсивно понятно как, просто в версии до 2007 года, как я прочитал было что-то называемое Application.FileSearch . Так вот эта штука искала и во вложенных файлах, по крайней мере так было где-то написано. Поэтому думал, что может и здесь можно как-то по хитрому. 
Большое спасибо за помощь! 
PM MAIL ICQ Skype MSN   Вверх
Akina
Дата 25.3.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Veve @  26.3.2009,  00:47 Найти цитируемый пост)
 в версии до 2007 года, как я прочитал было что-то называемое Application.FileSearch

Так оно никуда и не делось - посмотри в Object Browser

Код

Public Function GetFileList() As Variant
   ' This function returns an array of files that match the criteria
   ' specified by the SearchPath and SearchName properties. If the
   ' SearchSubDirs property is set to True, the search includes
   ' subdirectories of SearchPath.

   Dim intFoundFiles    As Integer
   Dim astrFiles()      As String
   Dim fsoFileSearch    As FileSearch
   
   Set fsoFileSearch = Application.FileSearch
   With fsoFileSearch
      .NewSearch
      .LookIn = p_strPath
      .FileName = p_strName
      .FileType = msoFileTypeAllFiles
      .SearchSubFolders = p_blnSearchSubs
      
      If .Execute(p_intSortBy, p_intSortOrder) > 0 Then
         p_intFoundFiles = .FoundFiles.Count
         ReDim astrFiles(1 To .FoundFiles.Count)
            For intFoundFiles = 1 To .FoundFiles.Count
               astrFiles(intFoundFiles) = .FoundFiles(intFoundFiles)
            Next intFoundFiles
            GetFileList = astrFiles
      Else
         GetFileList = ""
      End If
   End With
End Function




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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 1.1.2005
Где: Латвия, Рига

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



Ну почему то не работало.. и где-то было написано, что уже не работает.. лан вообщем не помню уже.. может и я что-то ни так делал..  smile 
PM MAIL ICQ Skype MSN   Вверх
DenniLa2
Дата 6.2.2011, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Akina @ 25.3.2009,  23:55)
Цитата(Veve @  26.3.2009,  00:47 Найти цитируемый пост)
 в версии до 2007 года, как я прочитал было что-то называемое Application.FileSearch

Так оно никуда и не делось - посмотри в Object Browser

Код

Public Function GetFileList() As Variant
   ' This function returns an array of files that match the criteria
   ' specified by the SearchPath and SearchName properties. If the
   ' SearchSubDirs property is set to True, the search includes
   ' subdirectories of SearchPath.

   Dim intFoundFiles    As Integer
   Dim astrFiles()      As String
   Dim fsoFileSearch    As FileSearch
   
   Set fsoFileSearch = Application.FileSearch
   With fsoFileSearch
      .NewSearch
      .LookIn = p_strPath
      .FileName = p_strName
      .FileType = msoFileTypeAllFiles
      .SearchSubFolders = p_blnSearchSubs
      
      If .Execute(p_intSortBy, p_intSortOrder) > 0 Then
         p_intFoundFiles = .FoundFiles.Count
         ReDim astrFiles(1 To .FoundFiles.Count)
            For intFoundFiles = 1 To .FoundFiles.Count
               astrFiles(intFoundFiles) = .FoundFiles(intFoundFiles)
            Next intFoundFiles
            GetFileList = astrFiles
      Else
         GetFileList = ""
      End If
   End With
End Function

Скажите плз, откуда этот код? Просто у меня не работает (офис 2010) и хочется обратиться к первоисточнику.
В данном примере ругается на  "Dim fsoFileSearch As FileSearch " - Compile error: User defined type not defined.
PM MAIL   Вверх
Akina
Дата 6.2.2011, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(DenniLa2 @  6.2.2011,  01:02 Найти цитируемый пост)
Скажите плз, откуда этот код?

Вспомнить, откуда копипастился пример два года назад, нереально. Но вероятно, из MSDN. 


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

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


Эксперт
***


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

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



Цитата(Akina @  6.2.2011,  00:21 Найти цитируемый пост)
Но вероятно, из MSDN

ну хоть кто нибудь, дайте ссылку, где его скачать  smile 
изучил Basic без него уже  smile 
PM MAIL   Вверх
Akina
Дата 6.2.2011, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вот таки лень самому поиск использовать?
http://msdn.microsoft.com/en-us/library/aa...office.10).aspx


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

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

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

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

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



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


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

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


 




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


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

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