Christian拥有一个充满DOC文件的文件夹,他需要将其转换为DOCX文件。他想知道是否有一种快速的方法来转换它们,而无需单独打开和保存它们。

Microsoft没有在Word中提供此功能,也没有提供加载项来进行转换。但是,您可以创建自己的宏来进行转换。这里显示了一个相当简单的方法:

Sub ConvertBatchToDOCX()

Dim sSourcePath As String     Dim sTargetPath As String     Dim sDocName As String     Dim docCurDoc As Document     Dim sNewDocName As String

' Looking in this path     sSourcePath = "c:\Users\Administrator\Desktop\Testing\"

sTargetPath = "c:\Users\Administrator\Desktop\Converted\"



' Look for first DOC file     sDocName = Dir(sSourcePath & "*.doc")

Do While sDocName <> ""

' Repeat as long as there are source files                  'Only work on files where right-most characters are ".doc"

If Right(sDocName, 4) = ".doc" Then             ' Open file             Set docCurDoc = Documents.Open(FileName:=sSourcePath & sDocName)



sNewDocName = Replace(sDocName, ".doc", ".docx")



With docCurDoc                 .SaveAs FileName:=sTargetPath & sNewDocName, _                   FileFormat:=wdFormatDocumentDefault                 .Close SaveChanges:=wdDoNotSaveChanges             End With         End If         ' Get next source file name         sDocName = Dir     Loop     MsgBox "Finished"

End Sub

为了使用宏,您需要进行两项更改。首先,在sSourcePath变量中指定包含要转换的文件的目录的完整路径(后跟反斜杠)。

然后,在sTargetPath变量中,指定转换后的文档应存储在其中的目录的完整路径(带有反斜杠)。

宏然后逐步浏览它在源目录中找到的所有DOC文件,打开它们,并将它们另存为DOCX文件在目标目录中。

请注意,我提到这是一种简单的方法。原因是因为它没有对其工作进行错误检查。例如,如果您连续两次运行此宏,则会收到错误消息,因为保存在目标目录中的文件已经存在。此外,您应该了解这会将所有DOC文件转换为DOCX文件。换句话说,如果原始文件中包含宏,则这些宏将在转换过程中被剥离。

最后,请注意,宏的心脏包含在If / Then结构中,该结构检查以确保文件名的最右边4个字符实际上是“ .doc”。之所以这样做,是因为Dir函数在某些系统上的行为非常糟糕,在这些系统上,搜索模式“ * .doc”会以匹配的方式返回_contains_ .doc的任何文件名。这意味着它还返回以.docx和.docm结尾的文件。显然,这些不应该转换,因此包含了If / Then结构以将它们淘汰掉。

如果您不想使用自己的宏,则可以使用第三方解决方案。格雷厄姆市长网站上的以下页面具有免费的加载项,除其他功能外,它将进行文档转换:

http://www.gmayor.com/document_batch_processes.htm

通过在Web上搜索“ doc docx转换器”(不带引号),您也许可以找到其他类似的转换器。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(643)适用于Microsoft Word 2007、2010、2013和2016。