我目前正在一个项目中,我需要保存一些变量,这些变量可以在工作簿的每次打开时使用,而无需在启动时手动进行设置。
要创建自定义文档属性,我使用Microsoft在其官方网站上提供的示例代码。
问题:
设置属性后,我将通过打开item(x)
来访问它们。数字x
似乎取决于物业名称的字母顺序。
有没有一种方法可以读取和使用属性,并按其名称打开它?
Sub InitializeCustomProperty()
Dim wksSheet1 As Worksheet
Set wksSheet1 = Application.ActiveSheet
' Add metadata to worksheet.
wksSheet1.CustomProperties.Add _
Name:="Computer 1", Value:="computername"
End Sub
Sub Add_My_Computer1()
' sets the value of my custom property (i"ve found out its Item(1) by outputting my properties
Dim sHostName2 As String
sHostName2 = Environ$("computername")
Worksheets(1).CustomProperties.Item(1).Value = sHostName2
End Sub
答案 0 :(得分:0)
我不知道是否有更简单的方法,但是以下函数通过其名称返回CustomProperty:
Function PropertyByName(PropertyName) As CustomProperty
Dim x As CustomProperty
For Each x In Worksheets(1).CustomProperties
If x.Name = PropertyName Then
Set PropertyByName = x
Exit For
End If
Next
End Function
您可以阅读。.
?PropertyByName("Computer 1").Value
或者您可以用..
PropertyByName("Computer 1").Value = Environ$("computername")
如果找不到名称,可能会进行一些错误检查,也许可以将工作表作为参数传递,但希望您能理解。
答案 1 :(得分:0)
您可能会考虑从普通视图中隐藏的工作簿或工作表范围的已定义名称。
Sub InitializeCustomNames()
Dim wksSheet1 As Worksheet
' Add defined name to workbook
ThisWorkbook.Names.Add Name:="wb1USR", _
RefersTo:=Chr(61) & Chr(34) & Environ("USERNAME") & Chr(34), _
Visible:=False
' Add defined name(s) to specific worksheet
Set wksSheet1 = Worksheets("sheet5")
wksSheet1.Names.Add Name:="ws1CN", _
RefersTo:=Chr(61) & Chr(34) & Environ("COMPUTERNAME") & Chr(34), _
Visible:=False
End Sub
Sub retrieveCustonNames()
Debug.Print Split(ThisWorkbook.Names("wb1USR"), Chr(34))(1)
Debug.Print Split(ThisWorkbook.Worksheets("sheet5").Names("ws1CN"), Chr(34))(1)
End Sub
在Sheet1中A1:A2中
=ws1CN
=wb1USR
这些将在公式,定义的名称,名称管理器中不可见,但是如果您使用 Visible:= True ,则可以显示。