Объект-коллекция "Files"
RAN
Дата: Среда, 05.11.2014, 21:37 |
Сообщение № 1
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Всем Мяу. Можно ли вытащить файл по индексу? Или никак нельзя? Обход типа Dir не интересен. [vba]Код
Set fso = CreateObject("Scripting.FileSystemObject") Set fld = fso.GetFolder(ThisWorkbook.Path) ' For Each ff In fld.Files использовать нельзя, ищем обход Set ff = fld.Files For i = 1 To ff.Count Set x = ff(i) ' а тут затык полный
[/vba]
Всем Мяу. Можно ли вытащить файл по индексу? Или никак нельзя? Обход типа Dir не интересен. [vba]Код
Set fso = CreateObject("Scripting.FileSystemObject") Set fld = fso.GetFolder(ThisWorkbook.Path) ' For Each ff In fld.Files использовать нельзя, ищем обход Set ff = fld.Files For i = 1 To ff.Count Set x = ff(i) ' а тут затык полный
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Всем Мяу. Можно ли вытащить файл по индексу? Или никак нельзя? Обход типа Dir не интересен. [vba]Код
Set fso = CreateObject("Scripting.FileSystemObject") Set fld = fso.GetFolder(ThisWorkbook.Path) ' For Each ff In fld.Files использовать нельзя, ищем обход Set ff = fld.Files For i = 1 To ff.Count Set x = ff(i) ' а тут затык полный
[/vba] Автор - RAN Дата добавления - 05.11.2014 в 21:37
Alex_ST
Дата: Среда, 05.11.2014, 22:29 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Ну, таки-Гав! Андрей, а почему ты решил, что к элементам коллекции Folder.Files (т.е. к файлам) можно обращаться по индексу так же, как к коллекции в VBA? Вот так, с вежливым обращением по имени-отчеству (ну, в смысле с расширением ) работает: [vba]Код
Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder("C:\") MsgBox Folder.Files.Count Set File = Folder.Files.Item("AUTOEXEC.BAT") MsgBox File.Path Set File = Folder.Files("AUTOEXEC.BAT") MsgBox File.Path
[/vba]
Ну, таки-Гав! Андрей, а почему ты решил, что к элементам коллекции Folder.Files (т.е. к файлам) можно обращаться по индексу так же, как к коллекции в VBA? Вот так, с вежливым обращением по имени-отчеству (ну, в смысле с расширением ) работает: [vba]Код
Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder("C:\") MsgBox Folder.Files.Count Set File = Folder.Files.Item("AUTOEXEC.BAT") MsgBox File.Path Set File = Folder.Files("AUTOEXEC.BAT") MsgBox File.Path
[/vba] Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Ну, таки-Гав! Андрей, а почему ты решил, что к элементам коллекции Folder.Files (т.е. к файлам) можно обращаться по индексу так же, как к коллекции в VBA? Вот так, с вежливым обращением по имени-отчеству (ну, в смысле с расширением ) работает: [vba]Код
Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder("C:\") MsgBox Folder.Files.Count Set File = Folder.Files.Item("AUTOEXEC.BAT") MsgBox File.Path Set File = Folder.Files("AUTOEXEC.BAT") MsgBox File.Path
[/vba] Автор - Alex_ST Дата добавления - 05.11.2014 в 22:29
RAN
Дата: Среда, 05.11.2014, 22:32 |
Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Мне как раз это и нужно получить. Я знаю, что у меня в папке 7 файлов. Их нудно перебрать, к определенным - обратиться.
Мне как раз это и нужно получить. Я знаю, что у меня в папке 7 файлов. Их нудно перебрать, к определенным - обратиться. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Мне как раз это и нужно получить. Я знаю, что у меня в папке 7 файлов. Их нудно перебрать, к определенным - обратиться. Автор - RAN Дата добавления - 05.11.2014 в 22:32
Alex_ST
Дата: Среда, 05.11.2014, 22:35 |
Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Если всего семь, то чем тебе [vba]Код
For Each ff In fld.Files
[/vba] не подходит? Или просто чешем правой задней за левым ухом, как в "Мозговом штурме"?
Если всего семь, то чем тебе [vba]Код
For Each ff In fld.Files
[/vba] не подходит? Или просто чешем правой задней за левым ухом, как в "Мозговом штурме"? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Если всего семь, то чем тебе [vba]Код
For Each ff In fld.Files
[/vba] не подходит? Или просто чешем правой задней за левым ухом, как в "Мозговом штурме"? Автор - Alex_ST Дата добавления - 05.11.2014 в 22:35
RAN
Дата: Среда, 05.11.2014, 22:38 |
Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
' For Each ff In fld.Files использовать нельзя, ищем обход
Если тебя очень интересует, почему, ОО For Each не знает.
' For Each ff In fld.Files использовать нельзя, ищем обход
Если тебя очень интересует, почему, ОО For Each не знает.RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение ' For Each ff In fld.Files использовать нельзя, ищем обход
Если тебя очень интересует, почему, ОО For Each не знает.Автор - RAN Дата добавления - 05.11.2014 в 22:38
Alex_ST
Дата: Среда, 05.11.2014, 22:40 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Упс! ??? Как же они на нём в VBA живут-то, если даже такой стандартной вещи у них нет?
Упс! ??? Как же они на нём в VBA живут-то, если даже такой стандартной вещи у них нет? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Среда, 05.11.2014, 22:41
Ответить
Сообщение Упс! ??? Как же они на нём в VBA живут-то, если даже такой стандартной вещи у них нет? Автор - Alex_ST Дата добавления - 05.11.2014 в 22:40
SM
Дата: Среда, 05.11.2014, 22:42 |
Сообщение № 7
Группа: Друзья
Ранг: Участник
Сообщений: 64
Репутация:
59
±
Замечаний:
0% ±
2003
"Семейства Files, Folders отличаются от большинства семейств тем, что доступ к их элементам можно производить только по ключу. Доступа по индексу в них нет, поэтому единственный способ перебора всех элементов семейств - применение For Each ... Next." (Король В.И., Visual Basic 6.0, Visual Basic for Application 6.0. Язык программирования. ...)
"Семейства Files, Folders отличаются от большинства семейств тем, что доступ к их элементам можно производить только по ключу. Доступа по индексу в них нет, поэтому единственный способ перебора всех элементов семейств - применение For Each ... Next." (Король В.И., Visual Basic 6.0, Visual Basic for Application 6.0. Язык программирования. ...) SM
Excel изощрён, но не злонамерен
Ответить
Сообщение "Семейства Files, Folders отличаются от большинства семейств тем, что доступ к их элементам можно производить только по ключу. Доступа по индексу в них нет, поэтому единственный способ перебора всех элементов семейств - применение For Each ... Next." (Король В.И., Visual Basic 6.0, Visual Basic for Application 6.0. Язык программирования. ...) Автор - SM Дата добавления - 05.11.2014 в 22:42
AndreTM
Дата: Среда, 05.11.2014, 22:42 |
Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация:
500
±
Замечаний:
0% ±
2003 & 2010
Ну да, всё правильно... Folder.Files - это коллекция, какой там может быть "индекс"? Стесняюсь спросить - а зачем?
Ну да, всё правильно... Folder.Files - это коллекция, какой там может быть "индекс"? Стесняюсь спросить - а зачем? AndreTM
Skype: andre.tm.007 Donate: Q iwi: 9517375010
Ответить
Сообщение Ну да, всё правильно... Folder.Files - это коллекция, какой там может быть "индекс"? Стесняюсь спросить - а зачем? Автор - AndreTM Дата добавления - 05.11.2014 в 22:42
Alex_ST
Дата: Среда, 05.11.2014, 22:43 |
Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Стесняюсь спросить - а зачем?
Стесняюсь спросить - а зачем?
Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Стесняюсь спросить - а зачем?
Автор - Alex_ST Дата добавления - 05.11.2014 в 22:43
AndreTM
Дата: Среда, 05.11.2014, 22:44 |
Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация:
500
±
Замечаний:
0% ±
2003 & 2010
А внешние скрипты он запускать может? Ну так вызови из него скрипт на VBS - а затем обрабатывай результаты...
А внешние скрипты он запускать может? Ну так вызови из него скрипт на VBS - а затем обрабатывай результаты... AndreTM
Skype: andre.tm.007 Donate: Q iwi: 9517375010
Ответить
Сообщение А внешние скрипты он запускать может? Ну так вызови из него скрипт на VBS - а затем обрабатывай результаты... Автор - AndreTM Дата добавления - 05.11.2014 в 22:44
RAN
Дата: Среда, 05.11.2014, 22:46 |
Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Ну так вызови из него скрипт на VBS
Ну ты и загнул! Dir как то попроще будет.
Ну так вызови из него скрипт на VBS
Ну ты и загнул! Dir как то попроще будет.RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Ну так вызови из него скрипт на VBS
Ну ты и загнул! Dir как то попроще будет.Автор - RAN Дата добавления - 05.11.2014 в 22:46
AndreTM
Дата: Среда, 05.11.2014, 22:49 |
Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация:
500
±
Замечаний:
0% ±
2003 & 2010
Хорошо.к определенным - обратиться
fso.FileExists() не устраивает? Или имена заранее неизвестны?
Хорошо.к определенным - обратиться
fso.FileExists() не устраивает? Или имена заранее неизвестны? AndreTM
Skype: andre.tm.007 Donate: Q iwi: 9517375010
Сообщение отредактировал AndreTM - Среда, 05.11.2014, 22:50
Ответить
Сообщение Хорошо.к определенным - обратиться
fso.FileExists() не устраивает? Или имена заранее неизвестны? Автор - AndreTM Дата добавления - 05.11.2014 в 22:49
krosav4ig
Дата: Четверг, 06.11.2014, 01:56 |
Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация:
989
±
Замечаний:
0% ±
Excel 2007,2010,2013
можно еще WINAPI покурить [p.s.]Achtung! немецкий язык!
можно еще WINAPI покурить [p.s.]Achtung! немецкий язык! krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение можно еще WINAPI покурить [p.s.]Achtung! немецкий язык! Автор - krosav4ig Дата добавления - 06.11.2014 в 01:56
RAN
Дата: Четверг, 06.11.2014, 12:13 |
Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Обманули меня, а я вас. У меня в другом месте в коде эта конструкция стоит, и работает. А поскольку работает, я и не обратил внимания, что работает. Взял, да и поверил. Не работает именно в варианте [vba]Код
For Each ff In fld.Files
[/vba]. [vba]Код
Set File = Folder.Files("AUTOEXEC.BAT") MsgBox File.Path
[/vba] тут проблем нет. krosav4ig ,
Обманули меня, а я вас. У меня в другом месте в коде эта конструкция стоит, и работает. А поскольку работает, я и не обратил внимания, что работает. Взял, да и поверил. Не работает именно в варианте [vba]Код
For Each ff In fld.Files
[/vba]. [vba]Код
Set File = Folder.Files("AUTOEXEC.BAT") MsgBox File.Path
[/vba] тут проблем нет. krosav4ig , RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Обманули меня, а я вас. У меня в другом месте в коде эта конструкция стоит, и работает. А поскольку работает, я и не обратил внимания, что работает. Взял, да и поверил. Не работает именно в варианте [vba]Код
For Each ff In fld.Files
[/vba]. [vba]Код
Set File = Folder.Files("AUTOEXEC.BAT") MsgBox File.Path
[/vba] тут проблем нет. krosav4ig , Автор - RAN Дата добавления - 06.11.2014 в 12:13
Alex_ST
Дата: Четверг, 06.11.2014, 15:59 |
Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
А простейшее [vba]Код
For Each ff In fld.Files Debug.Print ff.Name Next ff
[/vba]тоже не работает?
А простейшее [vba]Код
For Each ff In fld.Files Debug.Print ff.Name Next ff
[/vba]тоже не работает? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение А простейшее [vba]Код
For Each ff In fld.Files Debug.Print ff.Name Next ff
[/vba]тоже не работает? Автор - Alex_ST Дата добавления - 06.11.2014 в 15:59
RAN
Дата: Четверг, 06.11.2014, 16:14 |
Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Простейшее не пробовал, а F8 с For сразу за Next отправляет. И ошибки нет.
Простейшее не пробовал, а F8 с For сразу за Next отправляет. И ошибки нет. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Простейшее не пробовал, а F8 с For сразу за Next отправляет. И ошибки нет. Автор - RAN Дата добавления - 06.11.2014 в 16:14
Alex_ST
Дата: Четверг, 06.11.2014, 16:27 |
Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Так попробуй простейшее. А если заработает, вставь внутрь цикла Set File = ff Может быть из-за этого не пашет?
Так попробуй простейшее. А если заработает, вставь внутрь цикла Set File = ff Может быть из-за этого не пашет? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Так попробуй простейшее. А если заработает, вставь внутрь цикла Set File = ff Может быть из-за этого не пашет? Автор - Alex_ST Дата добавления - 06.11.2014 в 16:27
RAN
Дата: Четверг, 06.11.2014, 17:02 |
Сообщение № 18
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Ну вставил простейшее msgbox "QQ". Леш, , т.е. внутрь цикла не заходит. Да не парься, плюнь.
Ну вставил простейшее msgbox "QQ". Леш, , т.е. внутрь цикла не заходит. Да не парься, плюнь. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Ну вставил простейшее msgbox "QQ". Леш, , т.е. внутрь цикла не заходит. Да не парься, плюнь. Автор - RAN Дата добавления - 06.11.2014 в 17:02
Alex_ST
Дата: Четверг, 06.11.2014, 17:25 |
Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация:
609
±
Замечаний:
0% ±
2003
Ну так ведь сам пишешь:У меня в другом месте в коде эта конструкция стоит, и работает
или в другом месте - это не в ОО?
Ну так ведь сам пишешь:У меня в другом месте в коде эта конструкция стоит, и работает
или в другом месте - это не в ОО? Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Ну так ведь сам пишешь:У меня в другом месте в коде эта конструкция стоит, и работает
или в другом месте - это не в ОО? Автор - Alex_ST Дата добавления - 06.11.2014 в 17:25
RAN
Дата: Четверг, 06.11.2014, 17:29 |
Сообщение № 20
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
В другом месте - это извлекает из обычной коллекции.
В другом месте - это извлекает из обычной коллекции. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение В другом месте - это извлекает из обычной коллекции. Автор - RAN Дата добавления - 06.11.2014 в 17:29