Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

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

???

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

Вот пример макроса, записанного макрорекордером:
Код:

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

__________________
Скрипты PHP, VBA. Skype:ktmtramway Расписание электричек
Быстрый проверенный хостинг.
motorway вне форума   Ответить с цитированием
Старый 21.03.2012, 18:05   #5
Hugo121
Профессионал
 
Регистрация: 11.05.2010
Сообщений: 5,027
Репутация: 464
По умолчанию

Не быстро, но просто:
Код:

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
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 04:33   #7
YellRobin
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 5
Репутация: 10
Стрелка

Цитата:
Сообщение от 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 байт, 4 просмотров)
YellRobin вне форума   Ответить с цитированием
Старый 15.03.2019, 11:19   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,843
Репутация: 5431
По умолчанию

Цитата:
Сообщение от 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 в 11:29.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 15.03.2019, 19:18   #9
YellRobin
Новичок
Джуниор
 
Регистрация: 15.03.2019
Сообщений: 5
Репутация: 10
По умолчанию

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

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

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

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

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

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


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


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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


03:03.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru