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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2016, 06:14   #1
Aksuz
Новичок
Джуниор
 
Регистрация: 06.09.2016
Сообщений: 4
По умолчанию Выгрузка из TXT в Excel

Добрый день.
Есть txt файл с разделителями, никак не получается его выгрузить в excel по столбцам. Допустим есть текст:
5677 | Астраханский | fed-1152 | 05.09.2016, 8:51:26 | fed\fedfaurov.ss | Фауров С.С. | faurov@
7852 | Астраханский | fed-5412 | 13.08.2016, 5:46:51 | | |
8526 | Перьм | fed-9854 | 05.09.2016, 12:59:50 | fed\feddeviev.as | Девиев А.С. | deviev@

Никак не получается загнать в excel что бы все делилось построчно и по столбцам по разделителю "|".
Aksuz вне форума Ответить с цитированием
Старый 06.09.2016, 06:39   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно "вручную", воспользовавшись импортом внешних данных, а можно выполнить макрос:
Код:
Sub qq()
    Dim f As String, cell As Range
    f = "D:\Temp\test.txt" 'Путь и имя текстового файла
    Set cell = Range("A1") 'Первая ячейка для вставки
    With ActiveSheet.QueryTables.Add("TEXT;" & f, cell)
        .TextFileOtherDelimiter = "|": .Refresh BackgroundQuery:=False
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 06.09.2016, 08:31   #3
Aksuz
Новичок
Джуниор
 
Регистрация: 06.09.2016
Сообщений: 4
По умолчанию

Это круто, макрос работает, спасибо.
Но как сделать это без вмешательства рук? Можно ли через vbs например отрыть ексельку, выполнить этот макрос и закрыть ексельку? или каким то другим способом.
Aksuz вне форума Ответить с цитированием
Старый 06.09.2016, 08:35   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

без вмешательства рук отрыть ексельку, выполнить этот макрос
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 06.09.2016, 08:46   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно всё сделать скриптом vbs, но не вижу разницы открыть xls (с макросом в автозапуске) или vbs, в обоих случаях нужно "вмешательство рук".
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.09.2016, 10:28   #6
Aksuz
Новичок
Джуниор
 
Регистрация: 06.09.2016
Сообщений: 4
По умолчанию

Скрипт можно запустить ежедневным заданием, получить файлик екселя и потом роботом отправить по почте. Руки не нужны)
Aksuz вне форума Ответить с цитированием
Старый 06.09.2016, 11:04   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ежедневным заданием можно и xls открыть.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 07.09.2016, 07:42   #8
Aksuz
Новичок
Джуниор
 
Регистрация: 06.09.2016
Сообщений: 4
По умолчанию

как то так....
как теперь заполненную область отленеить и выставить размер столбцов?
Код:
Set objExcel = CreateObject("Excel.Application")
objExcel.DisplayAlerts = False
objExcel.Workbooks.Add
Sheet = 1
Set objSheet = objExcel.ActiveWorkbook.Worksheets(Sheet)
objSheet.Name = "Result1"
strExcelPath = "C:\test2\test1.xlsx"
Dim y
y = 2
strSourceFile = "c:\test2\test.txt"
With WScript.CreateObject("Scripting.FileSystemObject")
                If .FileExists(strSourceFile) Then
                               With .OpenTextFile(strSourceFile)
                                               Do Until .AtEndOfStream
                                                               strLine = .ReadLine()                                                            
                                                              Dim arr
							     	arr = Split(strLine , "|")
								Dim c
								For c = 0 to UBound(arr)
									objSheet.Cells(y,c+1).Value = arr(c)
							Next
							y=y+1
                                               Loop
                                               .Close
                               End With
                Else
                               WScript.Echo "Can't find [" & strSourceFile & "]."
                               WScript.Quit 1
                End If
End With
objExcel.ActiveWorkbook.SaveAs strExcelPath
objExcel.ActiveWorkbook.Close
'Quit Excel'
objExcel.Application.Quit
'Clean Up'
Set objSheet = Nothing
Set objExcel = Nothing

Последний раз редактировалось Aksuz; 07.09.2016 в 07:51.
Aksuz вне форума Ответить с цитированием
Старый 07.09.2016, 08:22   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

objSheet.Columns.AutoFit
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выгрузка из MySQL в Excel (некорректный файл Excel) Maxx PHP 4 16.09.2015 00:07
Выгрузка из ListView в CSV и TXT (нужен совет в визуальной реализации) FleXik Общие вопросы Delphi 10 30.07.2015 09:20
Выгрузка большого объёма данных в TXT файл Leximus Общие вопросы Delphi 9 03.12.2011 21:01
импорт данных из excel в txt и из txt в excel ESV Microsoft Office Excel 3 19.11.2010 10:29
Выгрузка данные из DBGrid-а в txt Angel86rus Общие вопросы Delphi 2 24.07.2009 13:26