Как открыть, добавить, удалить добавить и закрыть список файлов Word RTF с VBScript - PullRequest
0 голосов
/ 30 августа 2011

У меня есть код, который нужно открыть, добавить текст, удалить указанный текст, затем сохранить и закрыть файл документа rtf с помощью vbscript.Вот код:

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

Set objDoc = objWord.Documents.Open("C:\box\test.rtf")
Set objSelection = objWord.Selection
objSelection.Font.Size = "10"
objSelection.InsertAfter Text:="Hello"

objSelection.Delete
objDoc.SaveAs ("C:\box\test.rtf")
objWord.Quit

Однако мне нужно сделать это со списком файлов, поэтому я подумал, что мне нужно использовать FileSysObject, например:

Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(strDirectory) Then
    Set objFolder = objFSO.GetFolder(strDirectory)

' Check that the strDirectory folder exists
If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)

If objFSO.FileExists(strDirectory & strFile) Then
    Set objFolder = objFSO.GetFolder(strDirectory)

    For Each objFile In objFolder.Files
        Set objTextFile = objFSO.OpenTextFile _
        (strDirectory & strFile, ForAppending, True)
        ' Writes strText every time you run this VBScript
        objTextFile.WriteLine (strText)
        'objTextFile.WriteLine (strBlankText)
        objTextFile.Close
    Next

и т. Д.Имейте в виду, что я пропускаю некоторые переменные кода инициализации.

Есть ли способ объединить эти два подхода к проблеме, чтобы я мог работать с файлом и по-прежнему проходить по всем файлам?Я делаю это неправильно?

Есть идеи по этому поводу?

1 Ответ

2 голосов
/ 30 августа 2011

да, вы можете объединить 2 подхода - просто переместите код Word в цикл, убедившись, что активный документ закрывается в конце итерации. Я добавил if, чтобы проверить расширение текущего файла, чтобы убедиться, что Word открывает правильные типы файлов. Также немного изменить имя выходного файла, чтобы не перезаписывать

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

For Each objFile In objFolder.Files
    if objFSO.GetExtensionName(objFile.path) = "rtf" then
        Set objDoc = objWord.Documents.Open(objFile.path)
        Set objSelection = objWord.Selection
        objSelection.Font.Size = "10"
        objSelection.InsertAfter Text:="Hello"

        objSelection.Delete
        objDoc.SaveAs objFSO.BuildPath("C:\box", objFSO.GetBaseName(objFile.path) & "-test.rtf")
        objDoc.Close
    end if
Next

objWord.Quit

Вам также нужно будет включить код инициализации переменной, но это должно стать отправной точкой.

FileSystemObject reference

...