Консультация № 123800
19.02.2008, 04:01
0.00 руб.
0 2 2
Уважаемые эксперты. Помогите в решении задачи. Необходимо по известному пути открыть текстовый файл, найти определенный кусок текста и вставить его в ячейку.

Обсуждение

Неизвестный
19.02.2008, 18:49
общий
это ответ
Здравствуйте, Mombassa!
Интересная постановка вопроса. Если текст известен, то зачем его искать, можно сразу вставить:
Workbooks("Название книги.xls").Worksheets("Название листа").Range("A1").Value = "Известный текст"
И всё же:
см. Приложение
Из вводных данных следует, что путь к файлу известен, тогда
Puty = "C:\temp\


Приложение:
Sub poisk()‘Из вводных данных следует, что путь к файлу известен, допустим это C:\temp\, тогда:Путь = "C:\temp"‘А сам файл неизвестен, тогда поищем его:Файл = Dir(Путь) ‘Находим первый файл If Файл = "" Then MsgBox "Файл не найден" End End IfGoSub ОткрытиеФайла Do Файл = Dir ‘Ищем следующий файл (вызвав функцию без аргументов) GoSub Проверка GoSub ОткрытиеФайла Loop While Not Файл = ""5Exit SubОткрытиеФайла:x = MsgBox("Найден файл " + Файл + Chr(13) + _ "Нажмите <<Ок>>, чтобы открыть его" + Chr(13) + _ "Нажмите <<Отмена>>, чтобы пропустить", _ vbOKCancel, "Поиск файлов в " + Путь)If x = vbOK Then Open Путь + Файл For Input As #1 ‘Открывает файл ВведенноеСлово = InputBox("Введите текст, который нужно найти", "Ввод текста") Do While Not EOF(1) ‘Цикл пока не конец файла. счетчик = счетчик + 1 Seek #1, счетчик ‘Указываем с какой позиции читать из файла НайденноеСлово = Input(Len(ВведенноеСлово), #1) ‘Читаем из файла If НайденноеСлово = ВведенноеСлово Then MsgBox "Слово найдено" End End If Loop MsgBox "Слово НЕ найдено" Close #1End IfReturnПроверка: If Файл = "" Then MsgBox "Файлов больше нет" GoTo 5 End IfReturnEnd Sub
Неизвестный
19.02.2008, 23:49
общий
это ответ
Здравствуйте, Mombassa!
Передайте в функцию полный путь к текстовому файлу и искомый текст. Если текст присутствует в файле, функция его вернет.
Пользовательскую функцию можно использовать непосредственно в ячейке:
=textInFile("C:\Файл.txt", "Искомый текст")
Евгений.

Приложение:
Public Function textInFile(sFile$, sText$) As StringDim s$, fs As Object, a As ObjectIf Dir(sFile) = "" Then Exit FunctionSet fs = CreateObject("Scripting.FileSystemObject")Set a = fs.OpenTextFile(sFile)s = a.readalla.CloseIf InStr(s, sText) > 0 Then textInFile = sTextEnd Function
Форма ответа