VB Script для поиска и замены текста в документе Word - PullRequest
1 голос
/ 25 мая 2011

У меня нет особого опыта работы с VB Scripting, но я пытаюсь написать что-то, что будет искать определенную строку в текстовом документе, заменять ее любым, что я укажу, а затем распечатывать на принтере этикеток.

Первую замену делает просто отлично, но не вторую.Может ли кто-нибудь взглянуть и посмотреть, что я могу делать неправильно?

Option Explicit

Dim WordApp
Dim WordDoc
Dim strReadCompName
Dim strReadCompSN

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = TRUE

WordApp.Documents.Open("C:\LabelTemplate.doc")
WordApp.Documents("LabelTemplate.doc").Activate

Set WordDoc = WordApp.ActiveDocument

strReadCompName = InputBox("Enter Computer Name", "Name")
strReadCompSN = InputBox("Enter Serial Number", "Serial")

With WordApp.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .MatchWholeWord = TRUE
    .Text = "nametext"
    .Execute ,,,,,,,,,strReadCompName
End With

With WordApp.Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .MatchWholeWord = TRUE
    .Text = "serialtext"
    .Execute ,,,,,,,,,strReadCompSN
End With

WordDoc.PrintOut()
WordDoc.Saved = TRUE
WordApp.Quit

1 Ответ

4 голосов
/ 26 мая 2011

Решил мою собственную проблему, хаха

Oracle Certified Professional был прав.Все, что мне нужно было сделать, это добавить еще одну инструкцию, чтобы переместить курсор назад в начало.Я просто добавил WordApp.Selection.GoTo 1 в начало.

Option Explicit
'Procedure to edit word document add name and serial number. 
Sub SearchAndRep(searchTerm, replaceTerm, WordApp)
    WordApp.Selection.GoTo 1
    With WordApp.Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .MatchWholeWord = True
        .Text = searchTerm
        .Execute ,,,,,,,,,replaceTerm
    End With
End Sub

Dim WordApp
Dim WordDoc
Dim strReadCompName
Dim strReadCompSN
Dim objNetwork, WSHPrinters, counter

'Enumerate through printers to find local Zebra printer.
Set objNetwork = CreateObject("WScript.Network")
Set WSHPrinters = objNetwork.EnumPrinterConnections

For counter = 0 To WSHPrinters.Count - 1 Step 2
    If Left(WSHPrinters.Item(counter +1), 5) = "Zebra" Then
        WScript.Echo(WSHPrinters.Item(counter +1))
        objNetwork.SetDefaultPrinter(WSHPrinters.Item(counter +1))
    End If
Next

'Create a Microsoft Word Object and make it invisible. 
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = FALSE

'Open LabelTemplate.doc for editing. 
Set WordDoc = WordApp.Documents.Open("C:\LabelTemplate.doc")

'Read in name and serial number to print on label. 
strReadCompName = InputBox("Enter Computer Name", "Name")
strReadCompSN = InputBox("Enter Serial Number", "Serial")

'Procedures to edit the Word Document to add name and serial number. 
SearchAndRep "nametext", strReadCompName, WordApp
SearchAndRep "serialtext", strReadCompSN, WordApp

'Print out the label. 
'WordApp.PrintOut()

'Set the default printer back to what it was before. 
'Still have to do this. 
objPrinter.SetDefaultPrinter "\\******\**********"
WordDoc.Saved = TRUE
WordDoc.Close
WordApp.Quit
...