vba - 从. doc 文档( 并将它的保存为. docx ) 中的批处理中,删除突出显示的单词宏

  显示原文与译文双语对照的内容
0 0

我正在搜索宏,批处理打开. doc 文档并将它们保存为. docx.,已经找到了一个。 现在,我想删除所有文档中的任何高亮( 保留文本;以及执行更多清理操作) 。 当我在( 到最好的地方) 中添加一行时,它会连续运行,而不会在最后一个文档之后停止。 什么地方和怎样修改它?


Sub batch_cleaner()

Dim strFilename As String
Dim strDocName As String
Dim strPath As String
Dim oDoc As Document
Dim fDialog As FileDialog
Dim intPos As Integer
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
With fDialog
. Title ="Select folder and click OK"
. AllowMultiSelect = False
. InitialView = msoFileDialogViewList
 If. Show <> -1 Then
 MsgBox"Cancelled By User",,"List Folder Contents"
 Exit Sub
 End If
 strPath = fDialog.SelectedItems.Item(1)
 If Right(strPath, 1) <>"" Then strPath = strPath +""
End With
If Documents.Count> 0 Then
 Documents.Close SaveChanges:=wdPromptToSaveChanges
End If
If Left(strPath, 1) = Chr(34) Then
 strPath = Mid(strPath, 2, Len(strPath) - 2)
End If
strFilename = Dir$(strPath &"*.doc")
While Len(strFilename) <> 0
 Set oDoc = Documents.Open(strPath & strFilename)

'我在尝试添加一些东西


 strDocName = ActiveDocument.FullName
 intPos = InStrRev(strDocName,".")
 strDocName = Left(strDocName, intPos - 1)
 strDocName = strDocName &".docx"
 oDoc.SaveAs FileName:=strDocName, _
 FileFormat:=wdFormatDocumentDefault
 oDoc.Close SaveChanges:=wdDoNotSaveChanges
 strFilename = Dir$()
Wend

End Sub

而这个代码总是会破坏它:


 Selection.WholeStory
 Selection.Range.HighlightColorIndex = wdNoHighlight

时间: 原作者:

0 0

问题在于 .docx 文件的"简称"( 8 3 名) 。 它仍将以 .doc 结尾,因此它还在 dir$() 调用中查找你的新文件。

可以很容易地在命令提示符下演示( 假 .doc 文件只是为了显示名称问题):


C:> echo x> 1.docx
C:> if exist *.doc echo y
y
C:> dir *.doc
09/03/2014 06:27 PM 3 1.docx
C:> dir/x *.doc
09/03/2014 06:27 PM 3 100FD~1.DOC 1.docx

虽然从普通视图中隐藏了短名称,但它实际上是一个 .doc 文件,所以它匹配。 同样在脚本中,它将匹配。

有几个选项会突然浮现出来:

  • 将文件命名为与 .xyz 不匹配的其他文件,然后在以后进行批量重命名
  • 使用子目录存储生成的文件,使它的不会再次匹配 dir$() 调用中的内容
...