powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно организовать запись из txt файла в массив? (VBA для оffice)
12 сообщений из 12, страница 1 из 1
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419035
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть txt: 1;2;3;4;5;
6;7;8;9;0;
11;12;14;15;

Как можно загнать данные в двухмерный массив (";" - разделитель)?
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419102
Так нужно?

Array:
1
2
3
4
..
15
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419232
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, именно двухмерный:
1 2 3 4 5
6 7 8 9 0
11 12 13 14 15
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419499
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем txt:
a;bc;c;
d;e;fd;
ga;h;i;
";" - разделитель
Надо получить массив:
a bc c
d e fd
ga h i
Количество столбцов в txt одинаковое (т.е. одинаковое кол-во разделителей).

Как это можно реализовать?
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419570
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
   Dim fsoSysObj    As FileSystemObject
   Dim fl      As File
   Dim txsStream    As TextStream
   Dim retstring as string
   Dim a() as string

   Set fl = fsoSysObj.GetFile(Путь к фалу)
   Set txsStream = filFile.OpenAsTextStream(ForAppending)

  'читаем из файла
   i =  0 
   Do While txtStream.AtEndOfStream <> True
       retstring = a.ReadLine
       a(i) = Split(retstring, ";")
       i = i +  1 
   Loop
   
   set txtStream = nothing
   set fl = nothing
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419821
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, только VBA под excel первую строчку не понимает
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33419828
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и вообще почти ничего не понимает....
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33420030
Подключи библиотеку Microsoft Scripting Runtime.
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33420136
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не обязательно использовать доступ к файлу, как здесь указано
можно сделать так

Код: plaintext
1.
2.
3.
4.
5.
Open "TESTFILE" For Input As # 1 
...
Input # 1 , strTmp
a(i) split(strTmp)
...

просто я предложил использовать ф-цию Split, которая и разбивает строку в соответствии с заданным разделителем и полученный результат заносит в массив
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33420142
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покопавшись в хелпе, соорудил нечто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub TextStreamTest1()
  
      Dim fs, f, ts, s, a() As Variant, retstring
    Set fs = CreateObject("Scripting.FileSystemObject")

    Set f = fs.OpenTextFile("C:\c.txt")

     'читаем из файла
   
   i =  0 
   Do While f.AtEndOfStream <> True
       retstring = f.ReadLine
    a(i) = Split(retstring, ";")
   
       i = i +  1 
   Loop 
End Sub

Только мне непонятно, как работает функция split и вообще, подходит ли она в моем случае (см. выше описание проблемы)? Можно ли как-то разбить получившиеся строки (желательно без циклов на проверку символа, т.к. txt очень здоровый)
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33420189
Ты у себя ReDim пропустил.

Так еще можно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    Dim hFile As Long
    Dim strLine As String
    Dim avarData() As Variant
    Dim intI As Integer
    Dim intJ As Integer
    
    hFile = FreeFile
    
    Open "D:\1\Test.txt" For Input Access Read Shared As hFile
    
    Do Until EOF(hFile)
        ReDim Preserve avarData(intI)
        Line Input #hFile, strLine
        avarData(intI) = Split(Mid(strLine,  1 , Len(strLine) -  1 ), ";")
        intI = intI +  1 
    Loop

    For intI = LBound(avarData) To UBound(avarData)
        For intJ = LBound(avarData(intI)) To UBound(avarData(intI))
            Debug.Print avarData(intI)(intJ); " ";
        Next intJ
        Debug.Print ""
    Next intI
        
    Close hFile
End Sub
...
Рейтинг: 0 / 0
Как можно организовать запись из txt файла в массив? (VBA для оffice)
    #33420190
blah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, кстати, значение то не присваивается.... В обоих случаях... В чем проблема?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как можно организовать запись из txt файла в массив? (VBA для оffice)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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