Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Академик
Рейтинг: 8344
∙ повысить рейтинг »
Vasiliy83
Статус: Профессионал
Рейтинг: 2289
∙ повысить рейтинг »
Megaloman
Статус: Академик
Рейтинг: 1810
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1068
Дата выхода:08.08.2011, 23:00
Администратор рассылки:Vasiliy83 (Профессионал)
Подписчиков / экспертов:175 / 82
Вопросов / ответов:3 / 7

Консультация # 106855: Здравствуйте! У меня следующая проблема. Мне надо открыть все документы из папки, в каждом документе произвести однотипную замену (слово "папа" заменить на "мама"). Существует ли в VBA команда для того, чтобы открыть несколько документов? Или, может быть, открыть все документы из какой-то папки, проделать не...


Консультация # 128054: Подскажите пожайлуста как будет выглядеть скрипт(простой батничек) для копирования папки с файлами на указанное место. Например надо скопировать папку с данными с пути C:Новая папка в диск G: и чтобы на экран процесс копирования не выводился. И если можно то сделать так чтобы если вдруг скрипт был запущен второй раз и будет производиться в...
Консультация # 82340: Добрый день. Не получается вставить MSFlexGrid. Говорит"The control not be created because it is not properly licensed". ..

Консультация # 106855:

Здравствуйте! У меня следующая проблема.
Мне надо открыть все документы из папки, в
каждом документе произвести однотипную
замену (слово "папа" заменить на "мама").
Существует ли в VBA команда для того, чтобы
открыть несколько документов? Или, может быть, открыть все документы из какой-то папки, проделать необходимую операцию и закрыть? Или можно реализовать это на VB? Спасибо.

Дата отправки: 26.10.2007, 10:25
Вопрос задал: Gene
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Alexander N. Monastyrsky:

Здравствуйте, Gene!
В VBA можно переименовать файл, и даже папку.
Требования к переименованию:
- Файл/директория должен существовать.
- В этот момент он должен быть закрыт.
- Если файл открыт - генерится ошибка. Требуется сначала закрыть файл.
- Название файла не должно содержать "*" и других вспомогательных символов.
Только прямая ссылка на файл.

Dim OldName, NewName
OldName = "OLDFILE": NewName = "NEWFILE" \' Задаем имя файла.
Name OldName As NewName \' Переименовуем файл.

OldName = "C:\MYDIR\OLDFILE": NewName = "C:\YOURDIR\NEWFILE"
Name OldName As NewName \' Перемещаем и переименовуем файл. (можно неперемещать :)))

Консультировал: Alexander N. Monastyrsky
Дата отправки: 26.10.2007, 10:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Залетин Виталий Викторович (Практикант):

Здравствуйте, Gene!
Если нужны только вордовские файлы, то можно их найти в нужной директории и, открывая по одному, выполнять замену нужного текста, например, так (макрос ворда):

Sub ListFiles()
Dim files() As String, file As String
Dim iIter As Integer

\'ищем файлы в папке c:\11
iIter = 0
file = Dir$("c:\11\*.doc")

\'пока функция Dir$ возвращает нам имя найденного очередного файла
Do While Len(file) > 0
If file <> ThisDocument.Name Then \'это чтоб не забить свой файл, в котором выполняется макрос
\'Заносим имя найденного файла в массив
ReDim Preserve files(iIter)
files(iIter) = file

iIter = iIter + 1
End If

file = Dir$ \'ищем дальше
Loop

\'теперь открываем каждый из найденных
Dim doc As Word.Document
For iIter = LBound(files) To UBound(files)
Set doc = Word.Documents.Open(files(iIter)) \'открыли
With doc
With .Content.Find \'готовим объект поиска и замены
.ClearFormatting \'не учитывая форматирование
.Forward = True \'только вперед
.Text = "Папа" \'текст, который ищем

With .Replacement \'готовим объект замены
.Text = "Мама" \'текст, которым будет заменен найденный текст
.ClearFormatting \'не уитывая форматирование
End With

.Execute Replace:=Word.WdReplace.wdReplaceAll \'выполняем поиск и замену всех найденных образцов
End With

\'Если замена в документе не была произведена, свойство .Saved будет иметь значение True, иначе - False
If .Saved = False Then \'замена текста была
.SaveAs files(iIter) & " - Изменен.doc" \'сохраняем в новом файле
End If

.Close \'закрываем
End With

Set doc = Nothing \'убираемся за собой
Next iIter
End Sub

В принципе, этот пример можно перенести и в полноценный VB 6, но там уже надо будет в проекте ссылка на Microsoft Word X.X Object Library (у Вас своя версия). По-моему, должно перенестись без проблем.
Тут еще можно завести форму, где в текстовых полях указывать тексты поиска и замены и т. д.

Консультировал: Залетин Виталий Викторович (Практикант)
Дата отправки: 27.10.2007, 16:35
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Черников Игорь Владимирович (Студент):

Здравствуйте, Gene!
Это можно реализовать как в VBA, так и в VB6.
Вот кусок программы, который ищет в указанной папке все документы (*.doc), открывает их по очереди, находит все слова "папа", заменяет их на "мама", сохраняет и закрывает.

Dim appWD As Object
Dim путь As String
Dim файл As String
Set appWD = CreateObject("Word.Application") \'Создаем ссылку на ворд
путь = "C:\" \'Указываем папку, в которой нужно искать
файл = Dir(путь & "*.doc") \'Ищем первый вордовский файл
Do
If файл = "" Then Exit Do \'Если файлов больше нет, выходим из цыкла
appWD.Documents.Open (путь & файл) \'Открываем найденный файл
appWD.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
With appWD.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "папа" \'Ищем текст папа
.Replacement.Text = "мама" \'заменяем его на мама
.Forward = True
.Wrap = wdFindContinue
.Format = False
.Execute Replace:=wdReplaceAll
End With
appWD.ActiveDocument.Save \'сохраняем
appWD.ActiveDocument.Close \'закрываем
файл = Dir \'ищем следующий файл
Loop

Консультировал: Черников Игорь Владимирович (Студент)
Дата отправки: 29.10.2007, 18:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 128054:

Подскажите пожайлуста как будет выглядеть скрипт(простой батничек) для копирования папки с файлами на указанное место.
Например надо скопировать папку с данными с пути C:Новая папка в диск G: и чтобы на экран процесс копирования не выводился.
И если можно то сделать так чтобы если вдруг скрипт был запущен второй раз и будет производиться вторая попытка копирования файлов то те которые были скопированы будут просто замещены.
Заранее спасибо за ответ!!!

Дата отправки: 19.03.2008, 09:27
Вопрос задал: DimentiY
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Павленко Александр Геннадьевич:

Здравствуйте, DimentiY!
Вот код, однако консоль копирования все равно будет видна.

Приложение:

Консультировал: Павленко Александр Геннадьевич
Дата отправки: 19.03.2008, 10:34
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Megaloman (Академик):

Здравствуйте, DimentiY!
xcopy C:\Otkuda\*.* D:\Kuda\ /s /y
Копируем директорию с поддиректориями.
Смотрите xcopy /? -там подробно все параметры.
Окно будет видно.

Или скрипт:

var FSO=WScript.CreateObject("Scripting.FileSystemObject");
FSO.CopyFolder("F:\\Tralala","H:\\Kuku",true)

В блокноте вставьте эти две строки, сохраните в файл с расширением .js, например ffffff.js
Ничего на экране видно не будет
Внимание: в путях каждый слэж заменяется на 2 слэжа \\
Запускайте как обычный исполнимый файл

Консультировал: Megaloman (Академик)
Дата отправки: 19.03.2008, 12:59
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Черников Игорь Владимирович (Студент):

Здравствуйте, DimentiY!
"Батнички" пишутся простым текстовым редактором, поддерживающим кодировку DOS иначе каманды, содержащие русские буквы выполняться не будут. Создайте текстовый файл, впишите туда команды, сохраните файл, закройте и смените его расширение с *.txt на *.bat
Ваша строка будет выгдядеть примерно так:
xcopy "c:\Новая папка" "g:\Новая папка" /s /c /i /q /y
кавычки ставятся, если в названии пути или файла имеются пробелы. В приложении(если неодходимо) можете выбрать любой параметр и добавить (или удалить) его в свою строку.
Удачи!

Приложение:

Консультировал: Черников Игорь Владимирович (Студент)
Дата отправки: 19.03.2008, 18:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 82340:

Добрый день. Не получается вставить MSFlexGrid. Говорит"The control not be created because it is not properly licensed".

Дата отправки: 13.04.2007, 10:08
Вопрос задал: AlexMonk
Всего ответов: 1
Страница онлайн-консультации »


Консультирует NRJ:

Здравствуйте, AlexMonk!
Скорее всего недополоманный VB установили.
Попробуйте переустановить VB из другого источника или с другим крючём регистрации. Или просто использовать другой грид например http://www.scgrid.com/ там есть неплохая бесплатная версия.

Консультировал: NRJ
Дата отправки: 13.04.2007, 10:31
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное