powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Первый файл в коллекции Files
9 сообщений из 9, страница 1 из 1
Первый файл в коллекции Files
    #33826414
Dr. Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как узнать имя первого файла в коллекции Files?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Dim objFSO
    Dim objFolder
    Dim objFiles

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Test")
    Set objFiles = objFolder.Files

MsgBox objFiles.Item( 1 ).Name

    Set objFiles = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
Ругается на MsgBox objFiles.Item(1).Name:
Invalid procedure call or argument
При этом если вместо 1 написать имя файла в кавычках, то срабатывает. Но мне то и необходимо определить это имя!
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826440
Фотография Resident
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А такой вариант подойдет?

Dim FSO As Scripting.FileSystemObject

Dim ThisFolder As Scripting.Folder
Dim AllFiles As Scripting.Files
Dim strFile As Scripting.File

Set FSO = New Scripting.FileSystemObject
Set ThisFolder = FSO.GetFolder("C:\Windows")
Set AllFiles = ThisFolder.Files

For Each strFile In AllFiles 'Обходим в цикле все файлы в папке
MsgBox strFile.Name
Next
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826496
Dr. Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таким образом сейчас я и получаю имя перврго файла:
Код: plaintext
1.
2.
3.
For Each item in objFiles
MsgBox  item.name
Exit For
Next
Но что-то мне подсказывает, что есть более правильный способ обращения к первому элементу коллекции.
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826584
ANTIVIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. DenТаким образом сейчас я и получаю имя перврго файла:
Код: plaintext
1.
2.
3.
For Each item in objFiles
MsgBox  item.name
Exit For
Next
Но что-то мне подсказывает, что есть более правильный способ обращения к первому элементу коллекции.
Вообще то вы так должны получать не имя первого файла в коллекции, а имена всех файлов, может быть у вас там 1 файл? Тогда


Код: plaintext
MsgBox objFiles.Item( 1 ).Name
заменить на
Код: plaintext
MsgBox objFiles.Item( 0 ).Name
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826595
ANTIVIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ANTIVIR
Вообще то вы так должны получать не имя первого файла в коллекции, а имена всех файлов, может быть у вас там 1 файл? Тогда

Exit For не увидел, сори)
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826607
Dr. Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ANTIVIR Dr. DenТаким образом сейчас я и получаю имя перврго файла:
Код: plaintext
1.
2.
3.
For Each item in objFiles
MsgBox  item.name
Exit For
Next
Но что-то мне подсказывает, что есть более правильный способ обращения к первому элементу коллекции.
Вообще то вы так должны получать не имя первого файла в коллекции, а имена всех файлов,
После получения имени первого файла срабатывает
Код: plaintext
Exit For
ANTIVIR
может быть у вас там 1 файл? Тогда
Код: plaintext
MsgBox objFiles.Item( 1 ).Name
заменить на
Код: plaintext
MsgBox objFiles.Item( 0 ).Name
Та же ошибка
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826622
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr. Den Ругается на MsgBox objFiles.Item(1).Name:

Как я понял, то ругается потому, что в качестве аргумента св-ва Item надо указывать ключ коллекции, а он в данном случае является именем файла
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33826631
Dr. Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем почему ругается не так интересно как
Dr. DenКак узнать имя первого файла в коллекции Files?
...
Рейтинг: 0 / 0
Первый файл в коллекции Files
    #33827514
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллекция Files не поддерживает обращение к элементам с использованием численных индексов, только именами файлов. Если же все-таки нужно обращаться по индексу, то можно сделать так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub GetFile()
    Dim fso As Scripting.FileSystemObject
    Dim fld As Scripting.Folder
    Dim fls As Scripting.Files
    Dim f As Scripting.File
    Dim astrFiles() As String
    Dim lngI As Long
    
    Set fso = New Scripting.FileSystemObject
    Set fld = fso.GetFolder("C:\Windows")
    Set fls = fld.Files
    
    ReDim astrFiles(fls.Count -  1 )
    lngI =  0 
    
    For Each f In fls
        astrFiles(lngI) = f.Name
        lngI = lngI +  1 
    Next f
    
    Debug.Print "Первый элемент: " & astrFiles( 0 )
End Sub

Ну думаю, что вариант с Exit For, для определения первого элемента, будет наилучшим.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Первый файл в коллекции Files
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]