Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Загрузка даных с *.txt в VBA for AutoCAd

Загрузка даных с *.txt в VBA for AutoCAd

Ответ
Поиск в этой теме
Непрочитано 29.09.2008, 13:44 #1
Загрузка даных с *.txt в VBA for AutoCAd
sundead
 
Регистрация: 29.09.2008
Сообщений: 3

Мне необходимо загрузить текст типа
1 456 986 468
2 452 546 656
.....
453 546 654 464
из файла data.txt в матрицу и потом обработать..
Как это реализировать.
Желательно с примером кода
Просмотров: 4298
 
Непрочитано 30.09.2008, 23:28
#2
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Приветствую на форуме!
Вообще-то все это есть в Help'e

Попробуй:
Код:
[Выделить все]
Option Explicit
Sub ReadTabulatedData()
Dim coll As New Collection
Dim stroka, tmparr
' открываем файл для чтения (измени полный путь файла):
Open "C:\Temp\\data.txt" For Input As #1
Line Input #1, stroka   ' считываем строку в переменную
' считываем построчно до конца файла:
Do While Not EOF(1)
   tmparr = split(stroka, " ")
' заполняем коллекцию (поскольку не знаем количество строк):
coll.Add tmparr
Line Input #1, stroka   ' считываем строку в переменную в продолжении цикла
Loop
' закрываем файл
Close #1
' конвертируем коллекцию в двумерный массив 'ar'
ReDim ar(0 To coll.Count - 1, 0 To UBound(coll.Item(1)))
Dim i, j
For i = 1 To UBound(ar, 1) + 1
For j = 0 To UBound(ar, 2)
ar(i - 1, j) = coll.Item(i)(j)
Next
Next
' << далее работаешь с массивом >>
End Sub
~'J'~
fixo вне форума  
 
Непрочитано 01.10.2008, 10:44
#3
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


sundead, можно вопрос в этой теме задам, близко очень.
Как удалить строчку в файле. Допустим с текстом "2 452 546 656"?
Спасибо, )
Vildar вне форума  
 
Непрочитано 01.10.2008, 15:56
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


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

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 01.10.2008, 16:05
#5
sundead


 
Регистрация: 29.09.2008
Сообщений: 3


спасиба... меня код просто выручил
sundead вне форума  
 
Непрочитано 01.10.2008, 16:11
#6
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Ну бес ним, уговорил, вот так удалять строку:
(следи за именами файлов)

Код:
[Выделить все]
Option Explicit
'' обязательна ссылка на библиотеку: Microsoft Scripting Runtime
Sub TestForComma()

Dim a, b, s, fa, fb, fs, ForReading, fname
Dim cs As String
cs = "2 452 546 656"
ForReading = 1
fname = "data.txt" '' короткое имя!!
Set fs = CreateObject("Scripting.FileSystemObject")
Set b = fs.OpenTextFile("C:\data.txt", ForReading, False) ''исходный файл
Set a = fs.CreateTextFile("C:\data2.txt", True) ''файл временной копии

Do While Not b.AtEndOfStream
'' читаем файл
s = b.Read(0)
'' построчно
s = b.ReadLine
'' определяем условие
If s <> cs Then
a.WriteLine s
End If
Loop

a.Close
b.Close

Set fb = fs.GetFile("C:\data.txt")
fb.Delete
Set fb = Nothing

Set fa = fs.GetFile("C:\data2.txt")
fa.Name = fname

Set a = Nothing
Set b = Nothing
Set fa = Nothing
Set fs = Nothing

End Sub
fixo вне форума  
 
Непрочитано 01.10.2008, 16:16
#7
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Код не нужно и так понятно.
И еще вопрос. Возражений не было)
У меня не txt, а ini файл.
Для него есть функции по удалению строк? Или как с текстовым работать.
Vildar вне форума  
 
Непрочитано 01.10.2008, 16:23
#8
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Ништяк)
Vildar вне форума  
 
Непрочитано 01.10.2008, 18:51
#9
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от Vildar Посмотреть сообщение
Код не нужно и так понятно.
И еще вопрос. Возражений не было)
У меня не txt, а ini файл.
Для него есть функции по удалению строк? Или как с текстовым работать.
Как с текстовым файлом, конечно, а какая разница
Единственно чтобы не удалить атрибуты файла,
если эта строка связана с которым из них
Ты попробуй сначала на копии файла вручную все
это проделай в Блокноте, если все сростется, то
дерзай программно

~'J'~
fixo вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Загрузка даных с *.txt в VBA for AutoCAd

Размещение рекламы