如何编辑目录中的所有word文档?

时间:2016-03-22 01:35:23

标签: ms-word

我已经得到了纠正大约一百个左右代码测试报告的工作,这些报告由一位有更多进口工作要做的高级程序员错误地填写。

对我来说不幸的是,所有文件都是ms-word文件。但幸运的是,格式化是完全相同的,并且错误都是在同一个表中的相同单元格中进行的。

在过去,我编写了一个bash来编辑,将单引号更改为多个xml文件上的双引号。但那是一台linux机器。这次我只有一台窗户机。

任何提示从哪里开始?

1 个答案:

答案 0 :(得分:0)

答案是使用VBA。我建了两个子程序。

第一个subRoutine遍历目录和 打开它找到的每个* .doc文件。然后在它调用的打开文档文件上 第二个子例程。在第二个subRoutine完成文档后 保存然后关闭。

Sub DoVBRoutineNow()
Dim file
Dim path As String

path = "C:\Documents and Settings\userName\My Documents\myWorkFolder\"


file = Dir(path & "*.doc")
Do While file <> ""
Documents.Open FileName:=path & file

Call editCellsTableRow2

ActiveDocument.Save
ActiveDocument.Close

file = Dir()
Loop
End Sub

~~~~~~

第二个子例程仅在所有文档具有相同格式时才有效。 例如:文档中唯一表的第二行包含编号为6,7,8的单元格。这些包含“dd / MM / yyyy”,“姓氏”,“名字” 这些单元格需要更改为“yyyy / MM / dd”,“Surname”,“Given Name”

Sub editCellsTableRow2()
Application.ScreenUpdating = False
Dim Tbl As Table, cel As Cell, i As Long, n As Long
With ActiveDocument
For Each Tbl In .Tables

Tbl.Rows(2).Alignment = xlCenter

For Each cel In Tbl.Rows(2).Cells

If cel.ColumnIndex = 6 Then
cel.Range.Text = vbCrLf + "yyyy/MM/dd"
End If

If cel.ColumnIndex = 7 Then
cel.Range.Text = vbCrLf + "Surname"
End If

If cel.ColumnIndex = 8 Then
cel.Range.Text = vbCrLf + "Given Name"
End If

Next cel
Next Tbl
End With
Set cel = Nothing: Set Tbl = Nothing
Application.ScreenUpdating = True
End Sub