PDA

Показать полную графическую версию : [решено] Редактирование Word файл с под командной строки


DEDI
23-05-2013, 01:03
Цель: отредактировать документ Word с под командной строки (изменятся будет: номер документа, имя\фамилия )

Подойдет в принципе и Excel.

я так предполагаю что будет выглядит примерно так:
word.exe c:\doc.doc %NO% %NAME%

Iska
23-05-2013, 02:27
я так предполагаю что будет выглядит примерно так: »
DEDI, не предполагайте, так — не будет.

Подойдет в принципе и Excel. »
Excel не подойдёт в принципе.

Выкладывайте образец документа. Указывайте, что и на что нужно изменять.

DEDI
23-05-2013, 19:42
Примерно так, документ не составлялся т.к. не известно можно ли реализовать это.

Нужно задать:
Номер квитанции - указать номер
Клиент - имя фамилия
Сервис - там могут быть как цифры так и буквы

Iska
23-05-2013, 21:54
Попробуйте так:
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

DEDI
24-05-2013, 02:40
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

Заранее спасибо.

Iska
24-05-2013, 03:03
Выложите новый образец документа.

необходимо добавить еще одно значение. »
Какое именно?

Array("Клиент \(ФИО\)", strClient), _ »
Поиск и замена текста или других элементов - Word - Office.com (http://office.microsoft.com/ru-ru/word-help/HP005189433.aspx):
Чтобы найти знак, являющийся одним из подстановочных знаков, введите перед ним обратную косую черту (\). Например, введите \?, чтобы найти вопросительный знак.




© OSzone.net 2001-2012