Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Замена текста во всех файлах Word

Ответить
Настройки темы
VBS/WSH/JS - [решено] Замена текста во всех файлах Word

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не работает replace не пойму в чем проблема

Dim FSO, files, NameFile

Dim objWord, objDoc

Dim objSelection, myRange

Set FSO = CreateObject("Scripting.FileSystemObject")

Set objWord = CreateObject("Word.Application")
objWord.DisplayAlerts = True

Set files = FSO.GetFolder("D:\_Doc\").Files

For Each NameFile In files

if LCase(right(NameFile.Name,3))="doc" then

'MsgBox(NameFile)

Set objDoc = objWord.Documents.Open("D:\_Doc\"&NameFile.Name)
objWord.Visible = True


Set myRange = objDoc.Content
myRange.Find.Execute "+", False, False, False, False, False, True, wdFindContinue, False, "*", wdReplaceAll, False, False, False, False



'Set objSelection = objWord.Selection

'objSelection.Find.Text = "+"
'objSelection.Find.Forward = True
'objSelection.Find.MatchWholeWord = True
'objSelection.Find.Replacement.Text = "*"
'objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll

MsgBox(NameFile)

objDoc.SaveAs("D:\_Doc\"&"_"&NameFile.Name)
objDoc.Close

Set objSelection = Nothing

end if

Next

Set files = Nothing
Set FSO = Nothing

objWord.Quit

Отправлено: 21:11, 19-04-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


RiskSoft, как-то так:
Код: Выделить весь код
Option Explicit

Const wdFindContinue = 1
Const wdReplaceAll = 2

Dim objFSO
Dim objFile

Dim objWord
Dim objDocument

Set objFSO  = WScript.CreateObject("Scripting.FileSystemObject")
Set objWord = WScript.CreateObject("Word.Application")

objWord.Visible = False
objWord.DisplayAlerts = False

With objFSO
	For Each objFile In .GetFolder("D:\_DocIn").Files
		If UCase(.GetExtensionName(objFile.Name)) = UCase("doc") Then
			Set objDocument = objWord.Documents.Open(objFile.Path)
			
			WScript.Echo objFile.Name, objDocument.Content.Find.Execute("+", False, False, False, False, False, True, wdFindContinue, False, "*", wdReplaceAll)
			
			objDocument.SaveAs .BuildPath("D:\_DocOut", objFile.Name)
			objDocument.Close
		End if
	Next
End With

objWord.Quit

Set objWord = Nothing
Set objFSO  = Nothing

WScript.Quit 0
А какова общая цель?
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:26, 19-04-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Общая цель такова:

1. Найти в папке все файлы Word.
2. В каждом файле заменить слово "за май" на "за апрель"
3. Сохранить файл

Отправлено: 10:15, 20-04-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата RiskSoft:
3. Сохранить файл »
Ранее, в приведённом Вами скрипте, документ сохранялся в той же папке под другим именем. Мы же будем:

1. Сохранять документ под тем же именем.
2. Только тогда, когда были сделаны замены.

Так?

Отправлено: 10:58, 20-04-2012 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Гениально !!! Все работает, я в таком восторге ) На что раньше уходило день, теперь все решается за пару минут.


WScript.Echo objFile.Name, objDocument.Content.Find.Execute("Счет № 1/", False, False, False, False, False, True, wdFindContinue, False, "Счет № 4/", wdReplaceAll)
WScript.Echo objFile.Name, objDocument.Content.Find.Execute("«31» января 2012 г.", False, False, False, False, False, True, wdFindContinue, False, "«30» апреля 2012 г.", wdReplaceAll)
WScript.Echo objFile.Name, objDocument.Content.Find.Execute("за январь 2012 г.", False, False, False, False, False, True, wdFindContinue, False, "за апрель 2012 г.", wdReplaceAll)

А можно еще переделать скрипт, чтобы не было MsgBox о произведенной замене.
И автоматом еще отправить измененный документ на печать весь документы и определенные страницы.

Отправлено: 11:08, 20-04-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата RiskSoft:
А можно еще переделать скрипт, чтобы не было MsgBox о произведенной замене. »
Можно. Запускайте из командной строки как:
Код: Выделить весь код
cscript.exe //nologo "<Путь к скрипту>"
Цитата RiskSoft:
И автоматом еще отправить измененный документ на печать весь документы и определенные страницы. »
Прочтите ещё раз то, что Вы написали. Я не смог уяснить для себя с смысл данного предложения.

И что Вы скажете по поводу моего вопроса выше?

Отправлено: 12:22, 20-04-2012 | #6


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


По пункту 1, ответ: ДА
По пункту 2, ответ: ДА

Все верно и все правильно сделано!

По поводу печати, мне хочется знать как вывести на печать файл Word. Но проблема заключается в том что мне нужно вывести не весь документ, а скажем лист 2 и сделать 3 копии этого листа.

Отправлено: 15:58, 20-04-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата RiskSoft:
По пункту 1, ответ: ДА
По пункту 2, ответ: ДА »
Тогда примерно так:
читать дальше »
Код: Выделить весь код
Option Explicit

Const wdFindContinue = 1
Const wdReplaceAll = 2

Dim objFSO
Dim objFile

Dim objWord
Dim objDocument

Set objFSO  = WScript.CreateObject("Scripting.FileSystemObject")
Set objWord = WScript.CreateObject("Word.Application")

With objWord
	.Visible = False
	.DisplayAlerts = False
	
	For Each objFile In objFSO.GetFolder("D:\_Doc").Files
		If UCase(objFSO.GetExtensionName(objFile.Name)) = UCase("doc") Then
			With .Documents.Open(objFile.Path)
				If .Content.Find.Execute( _
					"+", False, False, False, False, False, True, wdFindContinue, False, "*", wdReplaceAll _
				) Then
					WScript.Echo objFile.Name, vbTab, "Ok"
					
					.Save
				Else
					WScript.Echo objFile.Name, vbTab, "Not found"
				End If
				
				.Close
			End With
		End if
	Next
	
	.Quit
End With

Set objWord = Nothing
Set objFSO  = Nothing

WScript.Quit 0


Цитата RiskSoft:
Код: Выделить весь код
WScript.Echo objFile.Name, objDocument.Content.Find.Execute("Счет № 1/", False, False, False, False, False, True, wdFindContinue, False, "Счет № 4/", wdReplaceAll)
WScript.Echo objFile.Name, objDocument.Content.Find.Execute("«31» января 2012 г.", False, False, False, False, False, True, wdFindContinue, False, "«30» апреля 2012 г.", wdReplaceAll)
WScript.Echo objFile.Name, objDocument.Content.Find.Execute("за январь 2012 г.", False, False, False, False, False, True, wdFindContinue, False, "за апрель 2012 г.", wdReplaceAll)
»
Вам нужно в каждом документе делать множественные замены?

Цитата RiskSoft:
По поводу печати, мне хочется знать как вывести на печать файл Word. Но проблема заключается в том что мне нужно вывести не весь документ, а скажем лист 2 и сделать 3 копии этого листа. »
Если это вопрос, то желательно заводить под него отдельную тему.

PrintOut Method*[Word 2007 Developer Reference], смотрите параметры «Copies», «Pages» и «Background».

Отправлено: 20:03, 20-04-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Замена текста во всех файлах Word

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - автоматический поиск и замена HEX в файлах Tosyk Скриптовые языки администрирования Windows 36 06-11-2021 05:49
CMD/BAT - [решено] Замена части текста в txt файлах Traveller124 Скриптовые языки администрирования Windows 7 02-04-2012 19:16
CMD/BAT - Сравнение и замена в файлах .txt Deep2007 Скриптовые языки администрирования Windows 4 19-11-2010 19:08
C/C++ - Поиск текста в файлах student_po Программирование и базы данных 6 04-09-2009 23:33
Пакетная замена в html-файлах y3ep Программное обеспечение Windows 7 11-06-2004 08:06




 
Переход