我们通过电子邮件发送,填写并返回工作簿模板。返回时,我们为工作簿分配一个唯一的编号。当前,唯一编号将附加到工作簿名称。
当工作簿未正确填写时,这是一个问题,我们必须将其发送出去进行更正,并在更改名称的情况下将其收回。
工作簿由VBA处理,数据库根据唯一编号进行更新。如果具有相同编号的工作簿再次出现,则假定它是更新并且记录被替换。
我们的想法是将唯一编号存储在隐藏的工作表中。是否有另一种不需要隐藏工作表的方法 - 例如通过代码读取和写入工作簿中的某些隐藏字段或全局常量的能力?
答案 0 :(得分:2)
您可以使用WorkBook的名称集合:
Sub StoreName(key As String, val As Variant)
Dim WB As Workbook
Set WB = ThisWorkbook
WB.Names.Add key, "=" & val 'to force val to be interpreted as a named formula
End Sub
Function ReadName(key As String) As Variant
Dim WB As Workbook
Set WB = ThisWorkbook
ReadName = Mid(WB.Names(key), 2)
End Function
测试如下:
Sub test()
StoreName "bob", "1234"
Debug.Print ReadName("bob")
End Sub
打印1234
。
还有其他方法可以存储持久数据。例如,这是一个有趣的blog post。
答案 1 :(得分:1)
您可以使用CustomDocumentProperties集合来存储您需要的值,如下所示:
Dim p As DocumentProperty
' Delete any existing property with this name
For Each p In ThisWorkbook.CustomDocumentProperties
If (p.Name = "uniqueNumber") Then
p.Delete
Exit For
End If
Next p
' Create the property with the required value
ThisWorkbook.CustomDocumentProperties.Add "uniqueNumber", False, msoPropertyTypeString, "42846479"
MsgBox ThisWorkbook.CustomDocumentProperties("uniqueNumber")