Показать полную графическую версию : [решено] Редактирование Word файл с под командной строки
Цель: отредактировать документ Word с под командной строки (изменятся будет: номер документа, имя\фамилия )
Подойдет в принципе и Excel.
я так предполагаю что будет выглядит примерно так:
word.exe c:\doc.doc %NO% %NAME%
я так предполагаю что будет выглядит примерно так: »
DEDI, не предполагайте, так — не будет.
Подойдет в принципе и Excel. »
Excel не подойдёт в принципе.
Выкладывайте образец документа. Указывайте, что и на что нужно изменять.
Примерно так, документ не составлялся т.к. не известно можно ли реализовать это.
Нужно задать:
Номер квитанции - указать номер
Клиент - имя фамилия
Сервис - там могут быть как цифры так и буквы
Попробуйте так:
Option Explicit
Const wdReplaceAll = 2
Dim strDocument
Dim strTicket
Dim strClient
Dim strService
Dim objFSO
Dim arrStrings
If WScript.Arguments.Count = 4 Then
strDocument = WScript.Arguments.Item(0)
strTicket = WScript.Arguments.Item(1)
strClient = WScript.Arguments.Item(2)
strService = WScript.Arguments.Item(3)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strDocument) Then
With WScript.CreateObject("Word.Application")
With .Documents.Open(strDocument)
For Each arrStrings In Array( _
Array("Номер квитанции", strTicket), _
Array("Клиент", strClient), _
Array("Сервис", strService) _
)
With .Content.Find
.ClearFormatting
.Text = "(" & arrStrings(0) & ": )(*)(^13)"
.MatchWildcards = True
.Format = False
.MatchCase = True
With .Replacement
.ClearFormatting
.Text = "\1" & arrStrings(1) & "\3"
End With
.Execute , , , , , , , , , , wdReplaceAll
End With
Next
.Save
.Close
End With
.Quit
End With
Else
WScript.Echo "Can't find document [" & strDocument & "]."
End If
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Document> <Ticket> <Client> <Service>"
End If
WScript.Quit 0
Iska, Огромное спасибо! то что нужно :)
Iska, еще один вопрос, необходимо добавить еще одно значение. Я попробовал но скрипт перестал работать =(. Где я ошибся?
Ошибка: Поле "Заменить на" содержит число, выходящее за пределы диапазона. код: 800A15F7
Команда: "%~dp0data_wscript.vbs" "%~dp0temp.doc" "12" "vasia pupkin" "9999999999" "internet connect"
Option Explicit
Const wdReplaceAll = 2
Dim strDocument
Dim strTicketNumber
Dim strClient
Dim strMobileTel
Dim strService
Dim objFSO
Dim arrStrings
If WScript.Arguments.Count = 5 Then
strDocument = WScript.Arguments.Item(0)
strTicketNumber = WScript.Arguments.Item(1)
strClient = WScript.Arguments.Item(2)
strMobileTel = WScript.Arguments.Item(3)
strService = WScript.Arguments.Item(4)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strDocument) Then
With WScript.CreateObject("Word.Application")
With .Documents.Open(strDocument)
For Each arrStrings In Array( _
Array("Номер", strTicketNumber), _
Array("Клиент (ФИО)", strClient), _
Array("Номер телефона", strMobileTel), _
Array("Сервис", strService) _
)
With .Content.Find
.ClearFormatting
.Text = "(" & arrStrings(0) & ": )(*)(^13)"
.MatchWildcards = True
.Format = False
.MatchCase = True
With .Replacement
.ClearFormatting
.Text = "\1" & arrStrings(1) & "\4"
End With
.Execute , , , , , , , , , , , , , , wdReplaceAll
End With
Next
.Save
.Close
End With
.Quit
End With
Else
WScript.Echo "Can't find document [" & strDocument & "]."
End If
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Document> <Ticket>
<Client> <Service>"
End If
WScript.Quit 0
Заранее спасибо.
Выложите новый образец документа.
необходимо добавить еще одно значение. »
Какое именно?
Array("Клиент \(ФИО\)", strClient), _ »
Поиск и замена текста или других элементов - Word - Office.com (http://office.microsoft.com/ru-ru/word-help/HP005189433.aspx):
Чтобы найти знак, являющийся одним из подстановочных знаков, введите перед ним обратную косую черту (\). Например, введите \?, чтобы найти вопросительный знак.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2024, Jelsoft Enterprises Ltd.