我有一些代码打开,附加一些文本,删除说的文本,然后保存和关闭一个rtf文档文件与vbscript。下面是代码:
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open("C:boxtest.rtf")
Set objSelection = objWord.Selection
objSelection.Font.Size = "10"
objSelection.InsertAfter Text:="Hello"
objSelection.Delete
objDoc.SaveAs ("C:boxtest.rtf")
objWord.Quit
但是,我需要对一个文件列表执行此操作,因此我认为必须使用a 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
等等……请记住,我省略了一些初始化变量代码。
是否有一种方法可以结合这两种方法来解决问题,这样我就可以对文件进行操作,并且仍然循环遍历所有文件,或者我这样做是错误的?
对此有什么想法吗?
是的,您可以合并这两种方法-只需将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参考