Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2012, 16:36   #1
Androgen13
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 11
По умолчанию Макрос для импорта в excel данных из текстового файла с разделителем "табуляция"

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

Может кто помочь?
Вложения
Тип файла: txt пример.txt (1.3 Кб, 235 просмотров)
Androgen13 вне форума Ответить с цитированием
Старый 21.03.2012, 17:07   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Самое простое - сохранить файл как пример.xls
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 21.03.2012, 17:34   #3
Androgen13
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 11
По умолчанию

???

нужен макрос который все это будет делать автоматически
Androgen13 вне форума Ответить с цитированием
Старый 21.03.2012, 17:43   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Вот пример макроса, записанного макрорекордером:
Код:
Sub Макрос1()
'
' Макрос1 Макрос
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Program Files (x86)\Bitrix Environment\www\temp6\Амурская область.csv", Destination _
        :=Range("$A$1"))
        .Name = "1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 866
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
motorway вне форума Ответить с цитированием
Старый 21.03.2012, 18:05   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не быстро, но просто:
Код:
Sub tt()
Dim a, i&, tmp
a = Split(CreateObject("Scripting.FileSystemObject").Getfile("C:\пример.txt").OpenasTextStream(1).readall, vbNewLine)
For i = 0 To UBound(a)
a(i) = Replace(a(i), """", "")
tmp = Split(a(i), vbTab)
Cells(i + 1, 1).Resize(1, UBound(tmp)) = tmp
Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.03.2012, 09:34   #6
Androgen13
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Не быстро, но просто:
Код:
Sub tt()
Dim a, i&, tmp
a = Split(CreateObject("Scripting.FileSystemObject").Getfile("C:\пример.txt").OpenasTextStream(1).readall, vbNewLine)
For i = 0 To UBound(a)
a(i) = Replace(a(i), """", "")
tmp = Split(a(i), vbTab)
Cells(i + 1, 1).Resize(1, UBound(tmp)) = tmp
Next
End Sub
Спасибо огромное, то что нужно
Androgen13 вне форума Ответить с цитированием
Старый 15.03.2019, 03:33   #7
YellRobin
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 5
Стрелка

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Не быстро, но просто:
Код:
Sub tt()
Dim a, i&, tmp
a = Split(CreateObject("Scripting.FileSystemObject").Getfile("C:\пример.txt").OpenasTextStream(1).readall, vbNewLine)
For i = 0 To UBound(a)
a(i) = Replace(a(i), """", "")
tmp = Split(a(i), vbTab)
Cells(i + 1, 1).Resize(1, UBound(tmp)) = tmp
Next
End Sub
Добрый день,
подскажите пожалуйста, почему у меня при выполнении Вашего макроса ругается на Cells(i + 1, 1).Resize(1, UBound(tmp)) = tmp

Пытаюсь подтянуть следующий .TXT
Вложения
Тип файла: txt test.txt (208 байт, 201 просмотров)
YellRobin вне форума Ответить с цитированием
Старый 15.03.2019, 10:19   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от YellRobin Посмотреть сообщение
подскажите пожалуйста, почему у меня при выполнении Вашего макроса ругается на Cells(i + 1, 1).Resize(1, UBound(tmp)) = tmp

Пытаюсь подтянуть следующий .TXT
не пробовали заголовок темы прочитать?

Макрос для импорта в excel данных из текстового файла с разделителем "табуляция"

у Вас в файле есть табуляция?!

Добавлено
замените строчки
Цитата:
Сообщение от YellRobin Посмотреть сообщение
Код:
a(i) = Replace(a(i), """", "")
tmp = Split(a(i), vbTab)
на
Код:
a(i) = Replace(a(i), """", "") & ","
tmp = Split(a(i), ",")
p.s. правда, будет глючить, если у Вас в кавычках встретятся запятые

p.p.s а почему просто не импортировать файл стандартными средствами Excel (это обычный CSV файл, разделители запятые)

Последний раз редактировалось Serge_Bliznykov; 15.03.2019 в 10:29.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.03.2019, 18:18   #9
YellRobin
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 5
По умолчанию

Спасибо большое за ответ! Ночью делал, банальное упустил!

На работе начальник попросил сделать док в Excel, в котором будет много специальных макросов, для работы сугубо в Excel без лишних действий ( даже импорта TXT в два клика)

Сейчас стараюсь создать в VBS-е GET-запрос передачи данных одной колонки дока своего к API по протоколу HTTP , с целью импорта нужных значений после обработки сервером API в определённую колонку.

Я в программировании макросов новичок практически, извиняюсь, если неверно формулирую или поясняю. Спасибо за понимание!
YellRobin вне форума Ответить с цитированием
Старый 15.03.2019, 19:41   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от YellRobin Посмотреть сообщение
Спасибо большое за ответ!
Пожалуйста. Рад был помочь!

Цитата:
Сообщение от YellRobin Посмотреть сообщение
Ночью делал, банальное упустил!
Это не страшно, такое бывает.


Цитата:
Сообщение от YellRobin Посмотреть сообщение
Сейчас стараюсь создать в VBS-е GET-запрос передачи данных одной колонки дока своего к API по протоколу HTTP , с целью импорта нужных значений после обработки сервером API в определённую колонку.
Не вижу принципиальных сложностей.
Но лучше эту проблему в другой, новой теме обсуждать.


Цитата:
Сообщение от YellRobin Посмотреть сообщение
Я в программировании макросов новичок практически, извиняюсь, если неверно формулирую или поясняю.
Да нет, всё нормально.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа функциями "ЕСЛИ", "И" и вывод текстового результата johny_03 Microsoft Office Excel 3 04.08.2014 11:01
макрос для сложения строчек с одинаковыми "заголовками" Badass Microsoft Office Excel 11 12.11.2010 09:11
EXCEL.VBA. Макрос "точной" копии документа xАлексейx Фриланс 5 12.07.2010 22:17
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03