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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2012, 01:36   #1
Composter
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 35
По умолчанию поиск текста в файлах папки и запись результатов

Здравствуйте, форумчане.
немного программирую на vba для excel ,а тут решил для word написать.подскажите как осуществить перебор всех вордовских документов в папке, и найти текст в каждом файле,выделить следующих 50 символов после текста, для последующий записи в другой файл?
Composter вне форума Ответить с цитированием
Старый 26.03.2012, 09:23   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> как осуществить перебор всех вордовских документов в папке
А как бы Вы это сделали для документов Excel?

> найти текст в каждом файле,выделить следующих 50 символов после текста
Запишите макрорекордером.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 29.03.2012, 11:49   #3
@лeся
Пользователь
 
Аватар для @лeся
 
Регистрация: 04.01.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Composter Посмотреть сообщение
Здравствуйте, форумчане.
немного программирую на vba для excel ,а тут решил для word написать.подскажите как осуществить перебор всех вордовских документов в папке, и найти текст в каждом файле,выделить следующих 50 символов после текста, для последующий записи в другой файл?
и это все не открывая файл? о.О
чудо техники...
@лeся вне форума Ответить с цитированием
Старый 29.03.2012, 15:08   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

>и это все не открывая файл? о.О
>чудо техники...
быть такого не может!!
Ципихович Эндрю вне форума Ответить с цитированием
Старый 30.03.2012, 04:20   #5
Composter
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 35
По умолчанию

я же не говорил что не открывая файл.насколько я знаю можно обрабатывать документ не делая видимым окно ворда, а вот можно ли осуществить поиск текста не делая видимым окно - этого я не знаю
Composter вне форума Ответить с цитированием
Старый 30.03.2012, 18:43   #6
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,040
По умолчанию

> а вот можно ли осуществить поиск текста не делая видимым окно - этого я не знаю
я знаю - можно!
Ципихович Эндрю вне форума Ответить с цитированием
Старый 01.04.2012, 00:41   #7
Composter
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 35
По умолчанию

ну я вот накатал макрос по поиску текста внутри файла по 2 фразам.а вот как перебрать файлы doc и docx внутри одной папки не знаю.помогите ...
Код:
Option Explicit
Option Base 1
Dim z1 As String, z2 As String
Dim stroka_1 As String, stroka_2 As String

Private Sub poisk_teksta1()
Dim myRange As Range
Dim na4_str As Long, kon_str As Long
Set myRange = ActiveDocument.Content
na4_str = InStr(1, myRange.Text, stroka_1) - 1
kon_str = InStr(1, myRange.Text, stroka_2) - 1
If ((na4_str < 1) Or (kon_str < 1)) Then
    z1 = Null
    z2 = Null
    Exit Sub
End If
Set myRange = ActiveDocument.Range(Start:=na4_str, End:=kon_str)
z1 = myRange.Text
z2 = Left(ActiveDocument.Name, InStr(1, ActiveDocument.Name, ".") - 1)
End Sub
Composter вне форума Ответить с цитированием
Старый 01.04.2012, 01:17   #8
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Нашёл справку: http://vba-help.ru/vbahelp/Function/file/Dir/

Вот до чего дошёл за полчаса:
Код:
Sub ShowFileNamesInFolder()
Dim pathto As String, i As Integer, N As Integer
    'N = 3
    'Dialogs(wdDialogFileOpen).Show 'выбрать папку - НЕ ПОЛУЧИЛОСЬ
    'Ниже - установка текущего каталога, в котором будем перебирать файлы
    ChDir ("C:\\Documents and Settings\\Admin\\Рабочий стол\\Word\\")
    pathto = CurDir$
    MsgBox pathto       'показ выбранного (текущего) каталога (пути к файлам)
    MsgBox Dir("")      'показ первого файла в текущем каталоге
End Sub
Хотя (в 20 веке) ходил и дальше.

Последний раз редактировалось Sasha_Smirnov; 01.04.2012 в 01:48.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 01.04.2012, 10:38   #9
Пименов Александр
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 222
По умолчанию

Вот примерный макрос перебора файлов с использованием объекта FileDialog
Код:
Public Sub Open_Files()
Dim FDlg As FileDialog ' Диалоговое окно для выбора файлов
Dim Doc As Document ' Документ в котором делаем сборку найденного текста
Dim mDoc As Document ' Временный документ созданный при переборе документов выбранных в диалоговом окне
Dim rng As Range ' Место в документе Doc куда будем вставлять найденный текст
    Set FDlg = Application.FileDialog(msoFileDialogFilePicker)
        With FDlg ' Свойства диалогового окна
            .Title = "Открыетие файлов Word"
            .Filters.Clear
            .Filters.Add "Все файлы", "*.doc, *.dot, *.docx, *.dotx, *.docm, *.dotm"
            .Filters.Add "Word 2003", "*.doc, *.dot"
            .Filters.Add "Word 2007-2010", "*.docx, *.dotx, *.docm, *.dotm"
            .ButtonName = "Открыть"
            .FilterIndex = 0
        End With
        FDlg.Show
        Set Doc = Documents.Add ' Создаем файл для сборки найденного текста
        Doc.SaveAs2 ("C:\Моя работа\Сборка.doc")
        For i = 1 To FDlg.SelectedItems.Count
            Set mDoc = Documents.Open(FDlg.SelectedItems(i))
'----------------------------------------------------------------------------------
' Здесь добавляем код по поиску и выделению нужного текста в документе mDoc
'----------------------------------------------------------------------------------
            Selection.Copy
            mDoc.Close
            Set rng = Doc.Range(Doc.Range.End, Doc.Range.End) ' Определяем место вставки в конце документа
            rng.PasteAndFormat
        Next i
End Sub
Пименов Александр вне форума Ответить с цитированием
Старый 01.04.2012, 14:39   #10
Composter
Пользователь
 
Регистрация: 15.10.2010
Сообщений: 35
По умолчанию

Пименов Александр ,что то в этой строке выдает ошибку
Код:
Set rng = Doc.Range(Start:=Doc.Range.End, End:=Doc.Range.End)
с этим разобрался , заменил на
Код:
Selection.EndOf
подскажите, а можно ли чтобы VBA перебрал доковские файлы в папке, в которой хранится документ с макросом, без диалогового окна?

Последний раз редактировалось Composter; 01.04.2012 в 15:16.
Composter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в файлах папке Dima DDM Общие вопросы Delphi 11 24.04.2011 22:39
Поиск текста в файлах Arassir Общие вопросы по программированию, компьютерный форум 5 08.04.2011 09:22
Запись результатов теста в txt Erick Cartman Общие вопросы Delphi 5 08.03.2010 20:16
Запись в файл результатов! Maria89 Паскаль, Turbo Pascal, PascalABC.NET 4 27.04.2009 23:31