创建带有增量数字的多个 Word 文档的最简单方法是什么?

创建带有增量数字的多个 Word 文档的最简单方法是什么?

我需要创建大约 80 个 Word 文档,这些文档除了文档中的数字标识符外,其余部分完全相同。该标识符与文档文件名相同,例如,名为“SN-100.doc”的文档在文档文本中必须包含字符串“SN-100”。

每个唯一的文档将驻留在由其唯一的数字标识符给出的文件夹位置中。例如,文件目录层次结构将如下所示:

/SN001/SN-1.doc
/SN002/SN-2.doc
.
.
.
/SN080/SN-80.doc

实现这一目标最简单、最快捷的方法是什么?

答案1

因此,对于大多数用户来说,这个解决方案可能过于具体且过于复杂,但它仍然解决了我的问题。

第一部分涉及在我想要标识的位置添加一个名为“FileName”的书签。打开文档时,以下宏会将书签更新为文件名:

Private Sub Document_Open()
'
' Document_Open Macro
'
'
    Application.OnTime (Now + TimeValue("00:00:02")), "ProcessActiveDocument"

End Sub

Sub ProcessActiveDocument()
    Dim BmkNm As String, BmkRng As Range, FileName As String
    BmkNm = "FileName"
    FileName = ActiveDocument.Name
    If InStrRev(FileName, ".") > 0 Then FileName = Left(FileName, InStrRev(FileName, ".") - 1)
    If ActiveDocument.Bookmarks.Exists(BmkNm) Then
      Set BmkRng = ActiveDocument.Bookmarks(BmkNm).Range
      If BmkRng.Text = FileName Then Exit Sub
      BmkRng.Text = FileName
      ActiveDocument.Bookmarks.Add BmkNm, BmkRng
    Else
      MsgBox "Bookmark: " & BmkNm & " not found."
    End If
    Set BmkRng = Nothing
End Sub

当然,必须正确解除宏安全性才能使其正常工作。

下一部分是一个 Python 脚本,用于复制文件并打开每个触发宏的文件。

import os
import shutil

ref_dir_base = "C:/SN"
word_doc = 'SN-'
word_ext = '.doc'
ref_num = 1
ref_str = str(1000+ref_num)[1:]
begin_num = 2
stop_num = 12
word_exec = '\"C:/Program Files (x86)/Microsoft Office/Office14/Winword.exe\"'


for i in range(begin_num, stop_num+1):
    num_str = str(1000+i)[1:]
    shutil.copytree(ref_dir_base+ref_str, ref_dir_base+num_str)
    old_doc_name = word_doc + str(ref_num) + word_ext
    new_doc_name = word_doc + str(i) + word_ext
    new_path = ref_dir_base + num_str + os.altsep
    os.rename(new_path + old_doc_name, new_path + new_doc_name)


for i in range(begin_num, stop_num+1):
    num_str = str(1000+i)[1:]   
    new_doc_name = word_doc + str(i) + word_ext
    new_path = ref_dir_base + num_str + os.altsep
    exec_param = '\"'+new_path+new_doc_name + '\"'
    exec_str = '\"'+word_exec+' '+exec_param +'\"'
    os.startfile(exec_param)

这种方法的唯一问题是 Word 文档处于打开状态且未保存,因此需要用户保存文档才能使更改生效。

相关内容