gpt4 book ai didi

vba - 用Word宏实现自增

转载 作者:行者123 更新时间:2023-12-01 23:15:51 24 4
gpt4 key购买 nike

我正在为文档模板编写 Word/VBA 宏。每次用户从模板保存/创建新文档时,文档都需要在文本中嵌入一个 ID。如何(尽可能简单地)实现此 ID 的自增? ID 是数字。

系统必须有某种机制来避免不同的文档获得相同的 ID,但负载很低。大约 20 人将使用此模板(在我们的内部网上),每周总共创建大约 20 个新文档。

我曾经考虑过拥有一个可以从宏中锁定和解锁的文本文件,或者使用 SQLite 数据库调用 PHP 页面,但是还有其他更智能的解决方案吗?

请注意,我不能使用 UUID 或 GUID,因为这些 ID 需要可供人类和机器使用。我们的客户必须能够通过电话说:“......关于这个,那么,ID 436 ......?”

最佳答案

对此进行了进一步思考,这是您可能需要考虑的另一种方法。如果您对以前 ID 的目录不感兴趣,那么您可以简单地使用自定义文档属性来存储最后使用的 ID。

在 Word 97-2003 中,您可以通过转到“文件/属性”,选择自定义选项卡并在此处指定名称和值来添加自定义属性。在 Word 2007 中添加自定义文档属性有点隐蔽,我想是“Office 按钮/准备/文档属性”,选择高级属性的小下拉框,你会得到相同的结果ol' 2007 年之前的对话。

在下面的示例中,我将我的名称简称为“DocumentID”,并为其分配了一个初始值零。

更新自定义文档属性的相关代码是:

ThisDocument.CustomDocumentProperties("DocumentID").Value = NewValue

作为概念证明,我创建了一个 .dot 文件并在 Document_New() 事件中使用了以下代码:

Sub UpdateTemplate()

Dim Template As Word.Document
Dim NewDoc As Word.Document
Dim DocumentID As DocumentProperty
Dim LastID As Integer
Dim NewID As Integer

'Get a reference to the newly created document
Set NewDoc = ActiveDocument

'Open the template file
Set Template = Application.Documents.Open("C:\Doc1.dot")

'Get the custom document property
Set DocumentID = Template.CustomDocumentProperties("DocumentID")

'Get the current ID
LastID = DocumentID.Value

'Use any method you need for determining a new value
NewID = LastID + 1

'Update and close the template
Application.DisplayAlerts = wdAlertsNone
DocumentID.Value = NewID
Template.Saved = False
Template.Save
Template.Close

'Remove references to the template
NewDoc.AttachedTemplate = NormalTemplate

'Add your ID to the document somewhere
NewDoc.Range.InsertAfter ("The documentID for this document is " & NewID)
NewDoc.CustomDocumentProperties("DocumentID").Value = NewID

End Sub

祝你好运!

关于vba - 用Word宏实现自增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com