0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 9
1

Макрос на загрузку текстового файла в таблицу Excel

27.05.2013, 17:45. Показов 19190. Ответов 11
Метки нет (Все метки)

Есть макрос для загрузки текста из текстового документа в таблицу эксель, изначально выполняется.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Main()
    Dim TextLine As String
    Dim myRow
    Dim myCount
    Open "Z:\Filename.txt" For Input As #1
    Лист1.Range("A17:L8000") = Clear
    myRow = Лист1.Cells.End(xlDown).Row
      Do While Not EOF(1)
    myRow = myRow + 1
    myCount = 1
    Line Input #1, TextLine
    While TextLine <> "***" And Not EOF(1)
    Лист1.Cells(myRow, myCount) = TextLine
    myCount = myCount + 1
    Line Input #1, TextLine
    Wend
    Loop
    Close #1
End Sub

Но при создании нового документа эксель и при запуске вставленного макроса выдает ошибку "Run-time error '1004' Application-defined or object-defined error". Далее нажимаю Debug - выделяется строка "Лист1.Cells(myRow, myCount) = TextLine". Вопрос - что я делаю неверно и как это исправить?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2013, 17:45
Ответы с готовыми решениями:

Макрос на загрузку из файла
Добрый день, помогите пожалуйста, стоит следующая задача: Необходимо в Excel, чтобы при нажатии на...

Макрос для замены текстового значения в ячейке Excel
Добрый день. Необходимо написать макрос для замены в ячейки текстового значения &quot;Заказ&quot; на...

Макрос, который переворачивает таблицу (Excel)
Здраствуйте. Помогите, пожалуйста, написать макрос который переворачивает таблицу. Вот пример:...

Макрос для экспорта из excel файла в excel файл шаблон
здравствуйте. подскажите как написать макрос. есть 1 файл со столбиками : город , дом, квартира,...

11
6874 / 2806 / 533
Регистрация: 19.10.2012
Сообщений: 8,552
27.05.2013, 17:54 2
Эксель английский?
0
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 9
27.05.2013, 17:55  [ТС] 3
Русский.
Править название листа, записав латиницей - пройденный этап, не помогло.
0
6874 / 2806 / 533
Регистрация: 19.10.2012
Сообщений: 8,552
27.05.2013, 17:58 4
Ну тогда вероятно упёрлись в край листа.
0
53 / 38 / 3
Регистрация: 25.01.2013
Сообщений: 368
27.05.2013, 19:05 5
Переписать в другой файл часть исходного
0
6874 / 2806 / 533
Регистрация: 19.10.2012
Сообщений: 8,552
27.05.2013, 20:51 6
Про "править название" - названия листа в коде нет. Есть кодовое имя.
0
3217 / 966 / 223
Регистрация: 29.05.2010
Сообщений: 2,085
27.05.2013, 20:52 7
Вот вариантик:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub LoadTXT()
    Dim sFiles As String, s As String, r As Double
    Cells.Clear
    sFiles = "Z:\Filename.txt"
    Open sFiles For Input As #1
    Do While Not EOF(1)
        Line Input #1, s
        If s = "***" Then Exit Do
        r = r + 1
        Cells(r, 1) = s
    Loop
    Close #1
 
End Sub
0
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 9
29.05.2013, 13:14  [ТС] 8
toiai, к сожалению это не совсем то, что нужно, нужно построчно выводить в ряд, до разделителя "***" и далее с новой строки в таблице.

Еще такой момент, подскажите как можно удалить первые несколько букв с пробелом в каждой строке и уже форматированное загружать в таблицу эксель с помощью макроса?
0
11464 / 3757 / 675
Регистрация: 13.02.2009
Сообщений: 11,097
29.05.2013, 13:31 9
Можно считать всё сразу
Visual Basic
1
2
3
4
5
   Dim File As String, CF As String    'объявим пеpеменнyю для имени файла и его cодеpжимого 
   File = "d:\ca.log"    'ycтановим имя файла и пyть 
   Open File For Binary As #1    'откpоем файл для чтения 
      CF = Input(FileLen(File), 1)   'загpyзить в пеpеменyю CF вcе cодеpжимое файла 
   Close #1    'закpыть файл
Потом разбить на массив по "***"
Visual Basic
1
M = Split(CF,"***")
И работать как с массивом.
Но нужно уточнять формат файла
0
Модератор
Эксперт MS Access
11265 / 4595 / 740
Регистрация: 07.08.2010
Сообщений: 13,177
Записей в блоге: 4
29.05.2013, 15:37 10
можно и по-строчно, если время не лимитирует
Visual Basic
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
26
Sub Main29()
    Dim TextLine As String
    Dim myRow
    Dim myCount
    
    Excel.ActiveWorkbook.Worksheets("лист1").Activate
    Open "c:\rab\Filename.txt" For Input As #1
    ActiveSheet.Range("A17:L8000").Clear
    ''myRow = ActiveSheet.Cells.End(xlDown).Row
    myRow = 16
    Do While EOF(1) = False
    myRow = myRow + 1
    myCount = 0
    
    Do While EOF(1) = False
    Line Input #1, TextLine
    TextLine = Trim(TextLine)
    If TextLine = "***" Then
    Exit Do
    End If
    myCount = myCount + 1
    ActiveSheet.Cells(myRow, myCount) = TextLine
    Loop
    Loop
    Close #1
End Sub
0
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 1
30.11.2015, 16:25 11
Мужики, нужна помощь.
Ситуация та же, есть ТХТ из которого я при помощи макроса описанного выше достаю данные:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Visual Basic
Выделить код
Sub LoadTXT()
    Dim sFiles As String, s As String, r As Double
    Cells.Clear
    sFiles = "Z:\Filename.txt"
    Open sFiles For Input As #1
    Do While Not EOF(1)
        Line Input #1, s
        If s = "***" Then Exit Do
        r = r + 1
        Cells(r, 1) = s
    Loop
    Close #1
 
End Sub
Проблемма в том, что данны в ТХТ у меня предоставлены построчно, разделитель точка с запятой ( длинна строк разная.
Например так:
015-08-19 11:37:42;0;1;0;;0000;0000;2015-08-19 11:37:55;0;;Z6061D9
как мне допилить этот код, что бы выгрузка в эксель шла в один столбец, по в несколько, и желательно дублированные точки с запятой считались как одна.

Добавлено через 11 минут
Пардон, прочитал и сам ничего не понял:
Как мне допилить этот код, что бы выгрузка в эксель шла НЕ в один столбец, а в несколько, и желательно дублированные точки с запятой (ключ раздела по столбцам) считались как одну.
0
11464 / 3757 / 675
Регистрация: 13.02.2009
Сообщений: 11,097
30.11.2015, 23:41 12
моделировать файлы лениво.
В общем так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub LoadTXT()
    Dim sFiles As String, s As String, r As Double
    Cells.Clear
    sFiles = "Z:\Filename.txt"
    Open sFiles For Input As #1
    Do While Not EOF(1)
        Line Input #1, s
        If InStr(1, s, ";") > 0 Then
        
        '        если ключ раздела по столбцам считались как одну. Но это не правильно!!.
                Do While InStr(1, s, ";;") > 0 '
                    s = Replace(s, ";;", ";") '
                Loop
                
                t = Split(s, ";")
                r = r + 1
                For i = 0 To UBound(t)
                        Cells(r, i + 1) = t(i)
                 Next i
         
        End If
    Loop
    Close #1
End Sub
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2015, 23:41
Помогаю со студенческими работами здесь

Нужно, чтобы макрос не загружал Excel таблицу.
Господа есть макрос Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim sSql As String...

Макрос для загрузки значений из текстового файла по строкам
Подскажите макрос для загрузки значений из текстового файла по строкам, т.е. допустим есть...

Импорт строчных данных из текстового файла в таблицу
Здравствуйте! Нужно написать макрос для Excel, который будет по моему хотению импотрировать из...

Дополните загрузку с текстового файла (Шахматы)
Помогите добавить в прорамму загрузку с файла нужно что бы с файла считывались переменные fig,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru