Как заменить слово в нескольких файлах сразу?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Maverick
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 11.09.2007 (Вт) 14:28

Как заменить слово в нескольких файлах сразу?

Сообщение Maverick » 11.09.2007 (Вт) 15:02

Нужно решить задачу:
Есть небольшая кучка файлав .xls (около 100 шт :) ). Все одинакового содержания (практически; это договора,меняются лишь данные клиента). В каждом договоре есть слово "монтажа". Необходимо это слово заменить на "сборки". Как это сделать по-умному и по-быстрому?

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 11.09.2007 (Вт) 15:59

Записать макрос
Открыть файл
Заменить "монтаж" на "сборка"
Сохранить изменения.
Закрыть файл.

вот этот код открывает по очереди все файлы в определенной папке форматирует текст и отправляет на принтер, после чего файл закрывается

Код: Выделить всё
Dim fso As New Scripting.FileSystemObject
Dim pFolder As Scripting.Folder
Dim pFile As Scripting.File


Sub Макрос6()


Set pFolder = fso.GetFolder("D:\VYP\For_Print")

For Each pFile In pFolder.Files

    ChangeFileOpenDirectory "D:\VYP\For_Print\"
    Documents.Open FileName:=pFile.Name, _
        ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
        WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
        wdOpenFormatAuto, Encoding:=1251

    Selection.WholeStory
    Selection.Font.Size = 7
    ActivePrinter = "HP LaserJet P2015 Series PCL 5"
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
        ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
        False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0

    ActiveDocument.Close SaveChanges:=False
   
   
    Next pFile
   
End Sub


Кто-то скажет что код не совсем красивый, но он был именно ЗАПИСАН а затем просто добавлен перебор файлов. И нужен был для разовой задачи по распечатке нескольких сотен txt документов.
Утро добрым не бывает!

Watts[]n!
Постоялец
Постоялец
 
Сообщения: 573
Зарегистрирован: 11.02.2007 (Вс) 0:19

Сообщение Watts[]n! » 11.09.2007 (Вт) 21:39

Подскажите пожалуйста, где можно найти кирпич, позволяющий делать то же самое, только с простыми Txt-файлами?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 11.09.2007 (Вт) 23:14

Watts[]n! писал(а):Подскажите пожалуйста, где можно найти кирпич, позволяющий делать то же самое, только с простыми Txt-файлами?

Что именно - распечатывать их или заменять слово?
Salus populi suprema lex

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 12.09.2007 (Ср) 9:27

А в коде для txt не много поменяется.
1.Через FSO получаем список файлов в папке.
2. По очереди открываем их
3. Читаем все что находится в файле в строковую переменную (опять таки при помощи FSO ReadAll кажется так)
4. Replace
5. Записываем в новый файл.
6. Все
Утро добрым не бывает!

Maverick
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 11.09.2007 (Вт) 14:28

Сообщение Maverick » 13.09.2007 (Чт) 8:34

Все спасибо, все свободны! У меня все получилось 8)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot], Yandex-бот и гости: 91

    TopList