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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 10:52   #1
Abdukhafiz
Пользователь
 
Регистрация: 29.12.2011
Сообщений: 31
По умолчанию Работа с файлами и строками в VBA

Привет всем... Помогите открыть файл и искать нужные данные и добавить их в определенные ячейки.
Вложения
Тип файла: zip files.zip (8.0 Кб, 15 просмотров)
Abdukhafiz вне форума Ответить с цитированием
Старый 01.02.2012, 14:24   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

примерно так(текстовик должен быть рядом):
Код:
Option Explicit
Option Compare Text

Sub QWERT()
Dim M() As String
Dim S_T() As String
Dim F_T() As String
Dim T1() As String
Dim T2() As String
Dim R
Dim REZ(1 To 2, 1 To 4)
   Dim File As String, CF As String   'объявим пеpеменнyю для имени файла и его cодеpжимого
   File = Application.ActiveWorkbook.Path & "\file.txt"   'ycтановим имя файла и пyть
   Open File For Binary As #1   'откpоем файл для чтения
      CF = Input(FileLen(File), 1)   'загpyзить в пеpеменyю CF вcе cодеpжимое файла
   Close #1   'закpыть файл
   M = Split(CF, vbNewLine)
   
For R = 1 To UBound(M) - 1
    If Split(M(R), ";")(0) = "first Text" Then F_T = Split(M(R), ";")
    If Split(M(R), ";")(0) = "Second Text" Then S_T = Split(M(R), ";")
    If Split(M(R), ";")(0) = "Text1" Then T1 = Split(M(R), ";")
    If Split(M(R), ";")(0) = "Text2" Then T2 = Split(M(R), ";")
Next R
For R = 1 To 4
REZ(1, R) = (Val(S_T(R)) - Val(F_T(R))) / Val(S_T(R))
REZ(2, R) = (Val(T2(R)) - Val(T1(R))) / Val(T2(R))
Next R
[e5:h6] = REZ
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 01.02.2012, 16:04   #3
Abdukhafiz
Пользователь
 
Регистрация: 29.12.2011
Сообщений: 31
По умолчанию

не работает.. на строке

If Split(M(R), ";")(0) = "First Text" Then F_T = Split(M(R), ";")

выводит ошибку
Abdukhafiz вне форума Ответить с цитированием
Старый 01.02.2012, 23:07   #4
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Непроверенного не выкладываю.
Какой офис?
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 01.02.2012, 23:11   #5
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Попробуй так: иногда некоторые офисы не хотят кушать короткий вызов функций
Код:
Option Explicit
Option Compare Text

Sub QWERT()
Dim M() As String
Dim S_T() As String
Dim F_T() As String
Dim T1() As String
Dim T2() As String
Dim R
Dim REZ(1 To 2, 1 To 4)
   Dim File As String, CF As String   'объявим пеpеменнyю для имени файла и его cодеpжимого
   File = Application.ActiveWorkbook.Path & "\file.txt"   'ycтановим имя файла и пyть
   Open File For Binary As #1   'откpоем файл для чтения
      CF = Input(FileLen(File), 1)   'загpyзить в пеpеменyю CF вcе cодеpжимое файла
   Close #1   'закpыть файл
   M = VBA.Split(CF, vbNewLine)
   
For R = 1 To UBound(M) - 1
    If VBA.Split(M(R), ";")(0) = "first Text" Then F_T = VBA.Split(M(R), ";")
    If VBA.Split(M(R), ";")(0) = "Second Text" Then S_T = VBA.Split(M(R), ";")
    If VBA.Split(M(R), ";")(0) = "Text1" Then T1 = VBA.Split(M(R), ";")
    If VBA.Split(M(R), ";")(0) = "Text2" Then T2 = VBA.Split(M(R), ";")
Next R
For R = 1 To 4
REZ(1, R) = (Val(S_T(R)) - Val(F_T(R))) / Val(S_T(R))
REZ(2, R) = (Val(T2(R)) - Val(T1(R))) / Val(T2(R))
Next R
[e5:h6] = REZ
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru

Последний раз редактировалось alex77755; 01.02.2012 в 23:14.
alex77755 вне форума Ответить с цитированием
Старый 02.02.2012, 10:51   #6
Abdukhafiz
Пользователь
 
Регистрация: 29.12.2011
Сообщений: 31
По умолчанию

У меня офис 2010...
Второй вариант выводить ту же ошибку.
Abdukhafiz вне форума Ответить с цитированием
Старый 02.02.2012, 19:37   #7
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

У меня 2010 портабле, 2007 установлен, 2003 портабле и у истановлен.
Никто не жалуется! везде работает!!
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 03.02.2012, 14:50   #8
Алексей Кулаков
Новичок
Джуниор
 
Регистрация: 03.02.2012
Сообщений: 1
По умолчанию

Чаще всего ошибка при работе строковых функций (Mid, Left, Split и др.) возникает, когда нарушена ссылка на библиотеку (не важно какую). Зайдите в VBA в Tools\References. Возможно там подключёна библиотека, ссылка на которую выдаёт ошибку (Missing). Попробуйте ссылку востановить (или хотя бы отключить библиотеку) и снова запустить макрос. Скорее всего ошибка исчезнет.
Алексей Кулаков вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами и строками inc Помощь студентам 1 13.06.2011 11:30
Работа с файлами и строками. inc Помощь студентам 3 26.05.2011 06:15
Работа со строками и файлами, С++ pakistan Помощь студентам 0 28.04.2009 23:39
Работа с файлами и строками. mituhin Общие вопросы C/C++ 1 06.12.2007 12:53