Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/работа с *.txt файлами - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
работа с *.txt файлами
saintus Дата: Среда, 28.11.2012, 09:46 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

есть текстовые файлы (много) =) в которых есть строки типа
lengh=1000
hi=500
и т.д.. (текст в файлах идёт строками)
хотелось бы чтобы excel выбрал эти строки и к цифрам в них прибавил или вычел ну например 9
 
Ответить
Сообщениеесть текстовые файлы (много) =) в которых есть строки типа
lengh=1000
hi=500
и т.д.. (текст в файлах идёт строками)
хотелось бы чтобы excel выбрал эти строки и к цифрам в них прибавил или вычел ну например 9

Автор - saintus
Дата добавления - 28.11.2012 в 09:46
Alex_ST Дата: Среда, 28.11.2012, 10:06 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Ну, Вы бы хоть один свой txt-файл (фрагмент) приложили и Excel-файл, в который нужно выводить данные.
Или нам самим придумывать, как файлы называются, где лежат и куда Excel должен выбирать из них данные?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНу, Вы бы хоть один свой txt-файл (фрагмент) приложили и Excel-файл, в который нужно выводить данные.
Или нам самим придумывать, как файлы называются, где лежат и куда Excel должен выбирать из них данные?

Автор - Alex_ST
Дата добавления - 28.11.2012 в 10:06
Hugo Дата: Среда, 28.11.2012, 10:28 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Одного хотения мало - нужно точно описать эту хотелку, и пример файлов показать.
Может быть хватит ВПР() и ПСТР()


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеОдного хотения мало - нужно точно описать эту хотелку, и пример файлов показать.
Может быть хватит ВПР() и ПСТР()

Автор - Hugo
Дата добавления - 28.11.2012 в 10:28
saintus Дата: Среда, 28.11.2012, 11:15 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

так.. я неправильно изъяснился.. извиняюсь за столько некачественно поставленный вопрос..)
не надо никуда выбирать данный, надо делать замену.
так.
вот к примеру файл 1.txt лежит да хоть на рабочем столе
в нем текст

goodwin
copr
a=1500
d=
c=5600
lengh=1000
hi=500

хотелось бы чтобы в нем изменилось только 2 параметра на +4 (именно на + или - т.е применялась формула)
и получилось

goodwin
copr
a=1500
d=
c=5600
lengh=1004
hi=504

вот и всё сохранилось в том же 1.txt
либо я могу их объединить в один большоооой файл засунуть в лист excel но там тоже нужна процедура по поиску нужных строк и желательно применение формулы на цифры в данной строке.
 
Ответить
Сообщениетак.. я неправильно изъяснился.. извиняюсь за столько некачественно поставленный вопрос..)
не надо никуда выбирать данный, надо делать замену.
так.
вот к примеру файл 1.txt лежит да хоть на рабочем столе
в нем текст

goodwin
copr
a=1500
d=
c=5600
lengh=1000
hi=500

хотелось бы чтобы в нем изменилось только 2 параметра на +4 (именно на + или - т.е применялась формула)
и получилось

goodwin
copr
a=1500
d=
c=5600
lengh=1004
hi=504

вот и всё сохранилось в том же 1.txt
либо я могу их объединить в один большоооой файл засунуть в лист excel но там тоже нужна процедура по поиску нужных строк и желательно применение формулы на цифры в данной строке.

Автор - saintus
Дата добавления - 28.11.2012 в 11:15
saintus Дата: Среда, 28.11.2012, 11:35 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

насчет ВПР и ПСТР спасибо интересные функции.. что нибудь с ними сейчас попробую..;)
 
Ответить
Сообщениенасчет ВПР и ПСТР спасибо интересные функции.. что нибудь с ними сейчас попробую..;)

Автор - saintus
Дата добавления - 28.11.2012 в 11:35
Hugo Дата: Среда, 28.11.2012, 11:44 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Ну тогда к примеру такой код VBS:

[vba]
Code
Set fso = CreateObject("Scripting.FileSystemObject")
MyPath = Left(WScript.ScriptFullName, (Len(WScript.ScriptFullName)) - (Len(WScript.ScriptName)))

Set ts = fso.OpenTextFile(MyPath & "1.txt", 1)
arrstr = Split(ts.ReadAll, vbCrLf)
ts.Close

Set outFile = fso.CreateTextFile(MyPath & "2.txt")

For i = 0 To UBound(arrstr)
     If Len(arrstr(i)) Then
         If Left(arrstr(i), 6) = "lengh=" Then arrstr(i) = "lengh=" & --Mid(arrstr(i), 7) + 4
         If Left(arrstr(i), 3) = "hi=" Then arrstr(i) = "hi=" & --Mid(arrstr(i), 4) + 4
     End If
     outFile.WriteLine arrstr(i)
Next

outFile.Close

MsgBox "OK", vbInformation
[/vba]
сохранить текст как название.vbs, положить на "хоть на рабочий стол", даблкликнуть.
Создастся файл 2.txt - но это только для теста, можно в коде 2.txt заменить на 1.txt.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу тогда к примеру такой код VBS:

[vba]
Code
Set fso = CreateObject("Scripting.FileSystemObject")
MyPath = Left(WScript.ScriptFullName, (Len(WScript.ScriptFullName)) - (Len(WScript.ScriptName)))

Set ts = fso.OpenTextFile(MyPath & "1.txt", 1)
arrstr = Split(ts.ReadAll, vbCrLf)
ts.Close

Set outFile = fso.CreateTextFile(MyPath & "2.txt")

For i = 0 To UBound(arrstr)
     If Len(arrstr(i)) Then
         If Left(arrstr(i), 6) = "lengh=" Then arrstr(i) = "lengh=" & --Mid(arrstr(i), 7) + 4
         If Left(arrstr(i), 3) = "hi=" Then arrstr(i) = "hi=" & --Mid(arrstr(i), 4) + 4
     End If
     outFile.WriteLine arrstr(i)
Next

outFile.Close

MsgBox "OK", vbInformation
[/vba]
сохранить текст как название.vbs, положить на "хоть на рабочий стол", даблкликнуть.
Создастся файл 2.txt - но это только для теста, можно в коде 2.txt заменить на 1.txt.

Автор - Hugo
Дата добавления - 28.11.2012 в 11:44
saintus Дата: Среда, 28.11.2012, 12:00 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

шикарно!!! а можно чтобы он когда все строки исходного файла посмотрел и заменил, исходный текстовый файл удалил, а путь и имя исходного текстового файла дал новому текстовому файлу.
и чтобы он так делал с директориями а не с отдельными ткстшками))
shy
а то я в этих самоучителях уже погряз, спасибо за нормальный код, есть на что посмотреть есть в чем разобраться!..
 
Ответить
Сообщениешикарно!!! а можно чтобы он когда все строки исходного файла посмотрел и заменил, исходный текстовый файл удалил, а путь и имя исходного текстового файла дал новому текстовому файлу.
и чтобы он так делал с директориями а не с отдельными ткстшками))
shy
а то я в этих самоучителях уже погряз, спасибо за нормальный код, есть на что посмотреть есть в чем разобраться!..

Автор - saintus
Дата добавления - 28.11.2012 в 12:00
Hugo Дата: Среда, 28.11.2012, 12:18 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Я ведь написал - можно в коде 2.txt заменить на 1.txt
Будет писать в тот же файл, из которого взял данные.
Но есть риск, что если в этот миг вырубится комп - всё пропадёт.
Можно конечно прописать переименование файлов в конце кода - но лениво smile

Чтоб перебирать все файлы папки - это тоже несложно добавить.

Вот:

[vba]
Code
Set fso = CreateObject("Scripting.FileSystemObject")
Set TheFolder = fso.GetFolder("D:\TMP\")
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles
     If UCase(fso.GetExtensionName(AFile.Path)) = "TXT" Then
         Set ts = fso.OpenTextFile(AFile.Path, 1)
         arrstr = Split(ts.ReadAll, vbCrLf)
         ts.Close

         Set outFile = fso.CreateTextFile(AFile.Path)

         For i = 0 To UBound(arrstr)
             If Len(arrstr(i)) Then
                 If Left(arrstr(i), 6) = "lengh=" Then arrstr(i) = "lengh=" & --Mid(arrstr(i), 7) + 4
                 If Left(arrstr(i), 3) = "hi=" Then arrstr(i) = "hi=" & --Mid(arrstr(i), 4) + 4
             End If
             outFile.WriteLine arrstr(i)
         Next

         outFile.Close

     End If
Next

MsgBox "OK", vbInformation
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ ведь написал - можно в коде 2.txt заменить на 1.txt
Будет писать в тот же файл, из которого взял данные.
Но есть риск, что если в этот миг вырубится комп - всё пропадёт.
Можно конечно прописать переименование файлов в конце кода - но лениво smile

Чтоб перебирать все файлы папки - это тоже несложно добавить.

Вот:

[vba]
Code
Set fso = CreateObject("Scripting.FileSystemObject")
Set TheFolder = fso.GetFolder("D:\TMP\")
Set TheFiles = TheFolder.Files

For Each AFile In TheFiles
     If UCase(fso.GetExtensionName(AFile.Path)) = "TXT" Then
         Set ts = fso.OpenTextFile(AFile.Path, 1)
         arrstr = Split(ts.ReadAll, vbCrLf)
         ts.Close

         Set outFile = fso.CreateTextFile(AFile.Path)

         For i = 0 To UBound(arrstr)
             If Len(arrstr(i)) Then
                 If Left(arrstr(i), 6) = "lengh=" Then arrstr(i) = "lengh=" & --Mid(arrstr(i), 7) + 4
                 If Left(arrstr(i), 3) = "hi=" Then arrstr(i) = "hi=" & --Mid(arrstr(i), 4) + 4
             End If
             outFile.WriteLine arrstr(i)
         Next

         outFile.Close

     End If
Next

MsgBox "OK", vbInformation
[/vba]

Автор - Hugo
Дата добавления - 28.11.2012 в 12:18
saintus Дата: Среда, 28.11.2012, 12:32 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Hugo ты гений, мало того ты понял меня)) так ты ещё и решил мою проблему) эх конечно бы добавить несколько ограничение (типо если присутствует текст blub то ничего изменять ненадо) , но и так вообще отлично!!.. этот текст можно выбрать за ранее.
огромное спасибо!
 
Ответить
СообщениеHugo ты гений, мало того ты понял меня)) так ты ещё и решил мою проблему) эх конечно бы добавить несколько ограничение (типо если присутствует текст blub то ничего изменять ненадо) , но и так вообще отлично!!.. этот текст можно выбрать за ранее.
огромное спасибо!

Автор - saintus
Дата добавления - 28.11.2012 в 12:32
Hugo Дата: Среда, 28.11.2012, 12:47 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Так добавляйте что угодно smile
Например так - взяли данные в массив, закрыли файл.
Перебрали массив, проверили на blub - если нашли, выход (exit for или Wscript.Quit - тут нужно помозговать...)
Если не нашли - далее по схеме.



webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеТак добавляйте что угодно smile
Например так - взяли данные в массив, закрыли файл.
Перебрали массив, проверили на blub - если нашли, выход (exit for или Wscript.Quit - тут нужно помозговать...)
Если не нашли - далее по схеме.


Автор - Hugo
Дата добавления - 28.11.2012 в 12:47
saintus Дата: Среда, 28.11.2012, 13:54 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

понятно.. а можно вот в это место "blub"
записать такое сочетание
blub
blub1
blub2
и чтобы он понял что надо искать не 3 строки а именно такое расположение 3-х строк по порядку и с переносом)) что-то я увлекся..
 
Ответить
Сообщениепонятно.. а можно вот в это место "blub"
записать такое сочетание
blub
blub1
blub2
и чтобы он понял что надо искать не 3 строки а именно такое расположение 3-х строк по порядку и с переносом)) что-то я увлекся..

Автор - saintus
Дата добавления - 28.11.2012 в 13:54
Hugo Дата: Среда, 28.11.2012, 13:57 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
А в чём разница этих blub'ов?
Если есть любой блуб - файл не меняем. Или если блуб3 то чуть-чуть меняем? smile


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеА в чём разница этих blub'ов?
Если есть любой блуб - файл не меняем. Или если блуб3 то чуть-чуть меняем? smile

Автор - Hugo
Дата добавления - 28.11.2012 в 13:57
saintus Дата: Среда, 28.11.2012, 14:12 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

да что-то совсем не то.. ладно ещё подумаю как можно было бы улучшить жизнь человечкам за пк..))
ещё раз спасибо, это все мои размышление основа решена и это главное..)
 
Ответить
Сообщениеда что-то совсем не то.. ладно ещё подумаю как можно было бы улучшить жизнь человечкам за пк..))
ещё раз спасибо, это все мои размышление основа решена и это главное..)

Автор - saintus
Дата добавления - 28.11.2012 в 14:12
Hugo Дата: Среда, 28.11.2012, 14:29 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Ну в общем да, подход Вы поняли.
Далее можно наращивать и ветвить smile
Например выделяем операцию изменения файла в отдельную функцию (или даже можно в отдельный скрипт) с параметрами - что и как менять.
Сперва анализируем файл, определяем что с ним делать, вызываем эту функцию (или не вызываем).


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу в общем да, подход Вы поняли.
Далее можно наращивать и ветвить smile
Например выделяем операцию изменения файла в отдельную функцию (или даже можно в отдельный скрипт) с параметрами - что и как менять.
Сперва анализируем файл, определяем что с ним делать, вызываем эту функцию (или не вызываем).

Автор - Hugo
Дата добавления - 28.11.2012 в 14:29
saintus Дата: Четверг, 29.11.2012, 11:15 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

я посидел подумал.. и придумал..))
вот теперь буду реализовывать по мере возможности.
замена есть надо добавить выборку, в выборке просто есть левая и правая сторона
пример
left
blub
blub2

right
blub3
blub4

вот надо как нито отследить blub2 и на него установить одну замену
а если
left
blub
blub1

right
blub3
blub2

то замена другая
а если

left
blub
blub2

right
blub3
blub2

то замена 3-я))
в общем если будут мысли я был бы просто в восторге и при много благодарен..)
а пока изучаю возможности vbs то что понял из кода (за что отдельное спасибо Hugo!!) мало для того чтобы понять как это всё разделить и сделать выборку по массиву строк.
 
Ответить
Сообщениея посидел подумал.. и придумал..))
вот теперь буду реализовывать по мере возможности.
замена есть надо добавить выборку, в выборке просто есть левая и правая сторона
пример
left
blub
blub2

right
blub3
blub4

вот надо как нито отследить blub2 и на него установить одну замену
а если
left
blub
blub1

right
blub3
blub2

то замена другая
а если

left
blub
blub2

right
blub3
blub2

то замена 3-я))
в общем если будут мысли я был бы просто в восторге и при много благодарен..)
а пока изучаю возможности vbs то что понял из кода (за что отдельное спасибо Hugo!!) мало для того чтобы понять как это всё разделить и сделать выборку по массиву строк.

Автор - saintus
Дата добавления - 29.11.2012 в 11:15
Hugo Дата: Четверг, 29.11.2012, 11:23 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Дайте пример пары разных файлов и как что нужно менять (в одном архиве), а то не вполне ясно (т.е. мысли есть, но возможно на практике всё иначе).

Ну а возможности примерно как у макросов - есть некоторые отличия и ограничения, но для простых задач возможностей хватает.
Если не будет хватать - можно код перекинуть в макрос и работать из Экселя.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеДайте пример пары разных файлов и как что нужно менять (в одном архиве), а то не вполне ясно (т.е. мысли есть, но возможно на практике всё иначе).

Ну а возможности примерно как у макросов - есть некоторые отличия и ограничения, но для простых задач возможностей хватает.
Если не будет хватать - можно код перекинуть в макрос и работать из Экселя.

Автор - Hugo
Дата добавления - 29.11.2012 в 11:23
saintus Дата: Четверг, 29.11.2012, 12:21 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

в архиве 3-тхт на которые на которых надо применить действие написаное в название..)
я код и так перекинул в макрос) по скольку работаю в своей форме и к ней подстроил ещё кнопочки под этот скрипт.
Пока вот этот поиск наладил в ручном режиме.) И думаю. как автоматом сделать выборку.
К сообщению приложен файл: blub.zip (1.6 Kb)
 
Ответить
Сообщениев архиве 3-тхт на которые на которых надо применить действие написаное в название..)
я код и так перекинул в макрос) по скольку работаю в своей форме и к ней подстроил ещё кнопочки под этот скрипт.
Пока вот этот поиск наладил в ручном режиме.) И думаю. как автоматом сделать выборку.

Автор - saintus
Дата добавления - 29.11.2012 в 12:21
Hugo Дата: Четверг, 29.11.2012, 12:41 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Файлы это хорошо. Но вот на что их анализировать - не понятно.
И что к чему прибавлять.
Распишите словами эти условия.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеФайлы это хорошо. Но вот на что их анализировать - не понятно.
И что к чему прибавлять.
Распишите словами эти условия.

Автор - Hugo
Дата добавления - 29.11.2012 в 12:41
saintus Дата: Четверг, 29.11.2012, 22:02 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

там в названиях файлов параметры какие надо прибавлять (ну или убавлять)..
а анализировать blub2 который встречается как в left так в right и в обоих сразу..
т.е когда в left меняется 3 параметра на +4 (я вместо 4-ки поставил textbox поскольку скрипт засунул на форму в VBA экселя) поэтому это не суть важно на сколько) когда справа меняется только 2 параметра на +4.) а вот когда и там и там то должны менятся 2 параметра на +8 и один параметр на +4.
вот такая схема.. )
я создал форму с 4-мя такими кнопками и создал 2 папки для сортировки)) вот всё свести бы к одной кнопке ) и одной папке)) а лучше чтоб ещё искал и в подпапках тоже было бы неплохо=)
p.s как говорится аппетит приходит во время еды..
 
Ответить
Сообщениетам в названиях файлов параметры какие надо прибавлять (ну или убавлять)..
а анализировать blub2 который встречается как в left так в right и в обоих сразу..
т.е когда в left меняется 3 параметра на +4 (я вместо 4-ки поставил textbox поскольку скрипт засунул на форму в VBA экселя) поэтому это не суть важно на сколько) когда справа меняется только 2 параметра на +4.) а вот когда и там и там то должны менятся 2 параметра на +8 и один параметр на +4.
вот такая схема.. )
я создал форму с 4-мя такими кнопками и создал 2 папки для сортировки)) вот всё свести бы к одной кнопке ) и одной папке)) а лучше чтоб ещё искал и в подпапках тоже было бы неплохо=)
p.s как говорится аппетит приходит во время еды..

Автор - saintus
Дата добавления - 29.11.2012 в 22:02
Hugo Дата: Пятница, 30.11.2012, 00:18 | Сообщение № 20
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Не вполне понял - blub не нужно анализировать? И что когда изменять?
Но вот такая заготовка (начало прежнего кода, "хвост" отрезал)- путём анализа полученных 0/1/10/11 можно организовать ветвление.
Или просто далее анализировать эти флаги по отдельности, как угодно.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНе вполне понял - blub не нужно анализировать? И что когда изменять?
Но вот такая заготовка (начало прежнего кода, "хвост" отрезал)- путём анализа полученных 0/1/10/11 можно организовать ветвление.
Или просто далее анализировать эти флаги по отдельности, как угодно.

Автор - Hugo
Дата добавления - 30.11.2012 в 00:18
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!