我在哪里可以保存用户输入的设置?
Where can I save the settings entered by the user?
VBA.
步骤 1
MS 项目文件已打开;
用户启动宏;
表格已打开;
用户输入路径;
用户点击 "Save";
用户关闭表单;
用户关闭 MS Project 文件。
步骤 2
用户打开 MS 项目文件;
用户赢得宏;
表格已打开;
表单显示用户注册的路径"Stage 1";
问题
如何使当用户第二次打开表单时(步骤 2)在表单中显示在(步骤 1)中保存的路径?
换句话说,关闭窗体后(第1步),文本框的值被保留了?
这个文本框值可以保存在 MS Project 文件中吗?
还是我应该将它保存在一个单独的文件中?
如何做到最好?
添加自定义文件 属性 以在 MS 项目文件 中存储信息 。例如:
Sub StorePath(newPath As String)
Dim test As String
test = GetPath()
If Len(test) = 0 Then
ActiveProject.CustomDocumentProperties.Add Name:="UserPath", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=newPath
Else
ActiveProject.CustomDocumentProperties("UserPath") = newPath
End If
End Sub
Function GetPath() As String
On Error Resume Next
GetPath = ActiveProject.CustomDocumentProperties("UserPath")
End Function
信息将存储在文件本身,不同的文件可以有不同的存储路径,如果在另一台电脑上打开,路径仍然可用。
要在用户计算机上保存单个值,无论打开哪个文件,请使用 SaveSetting and GetSetting,如 Sam 在上述评论中所述。这些不与文件一起存储,并且在其他计算机上不可见。
一个项目的任务0(项目总结任务)很少用到,所以它的notes字段可以用来存放长数据。与 ActiveProject.CustomDocumentProperties 不同,任务 0 的注释不受 255 个字符的限制。
访问任务 0 的注释有点棘手。在任何其他任务中,您将使用
ActiveProject.Tasks(someTaskID).Notes = "really long strings"
'where someTaskID is an integer variable
但任务 0 的笔记被
访问
ActiveProject.Comments = "really long strings"
继 Rachel 的回答和对 Jerred S 的回应。'评论,很容易克服 CustomDocumentProperties 的 255 个字符限制并在其中存储 War 和 Peace。编写函数 storeMyCDPstring(CDPNames as string, CDPVal as string)。它需要将 CDPVal 分成 not-to-exceed 255 个字符的数据包,并将它们存储为索引的 CustomDocumentProperties。例如,您想在名为 "MyCDP" 的 CustomDocumentProperty 中存储一个 1000 个字符的字符串。您采用任意命名约定 - CDP 将由“#~#-n”索引:
- 字符 1 到 255 将存储为 CustomDocumentProperty "myCDP#~#-1",
- 字符 256 到 510 将存储为 CustomDocumentProperty "myCDP#~#-2",
- 字符 511 到 765 将存储为 CustomDocumentProperty "myCDP#~#-3",
- 字符 766 到 1000 将存储为 CustomDocumentProperty "myCDP#~#-4"
您将需要编写一个函数,例如 function getMyCDPstring(CDPNames as string),它必须检索、连接和 return 所有子字符串。您还需要一个托管的 delMyCDP 函数来删除所有数据包。
VBA.
步骤 1
MS 项目文件已打开;
用户启动宏;
表格已打开;
用户输入路径;
用户点击 "Save";
用户关闭表单;
用户关闭 MS Project 文件。
步骤 2
用户打开 MS 项目文件;
用户赢得宏;
表格已打开;
表单显示用户注册的路径"Stage 1";
问题
如何使当用户第二次打开表单时(步骤 2)在表单中显示在(步骤 1)中保存的路径?
换句话说,关闭窗体后(第1步),文本框的值被保留了?
这个文本框值可以保存在 MS Project 文件中吗?
还是我应该将它保存在一个单独的文件中?
如何做到最好?
添加自定义文件 属性 以在 MS 项目文件 中存储信息 。例如:
Sub StorePath(newPath As String)
Dim test As String
test = GetPath()
If Len(test) = 0 Then
ActiveProject.CustomDocumentProperties.Add Name:="UserPath", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=newPath
Else
ActiveProject.CustomDocumentProperties("UserPath") = newPath
End If
End Sub
Function GetPath() As String
On Error Resume Next
GetPath = ActiveProject.CustomDocumentProperties("UserPath")
End Function
信息将存储在文件本身,不同的文件可以有不同的存储路径,如果在另一台电脑上打开,路径仍然可用。
要在用户计算机上保存单个值,无论打开哪个文件,请使用 SaveSetting and GetSetting,如 Sam 在上述评论中所述。这些不与文件一起存储,并且在其他计算机上不可见。
一个项目的任务0(项目总结任务)很少用到,所以它的notes字段可以用来存放长数据。与 ActiveProject.CustomDocumentProperties 不同,任务 0 的注释不受 255 个字符的限制。
访问任务 0 的注释有点棘手。在任何其他任务中,您将使用
ActiveProject.Tasks(someTaskID).Notes = "really long strings"
'where someTaskID is an integer variable
但任务 0 的笔记被
访问ActiveProject.Comments = "really long strings"
继 Rachel 的回答和对 Jerred S 的回应。'评论,很容易克服 CustomDocumentProperties 的 255 个字符限制并在其中存储 War 和 Peace。编写函数 storeMyCDPstring(CDPNames as string, CDPVal as string)。它需要将 CDPVal 分成 not-to-exceed 255 个字符的数据包,并将它们存储为索引的 CustomDocumentProperties。例如,您想在名为 "MyCDP" 的 CustomDocumentProperty 中存储一个 1000 个字符的字符串。您采用任意命名约定 - CDP 将由“#~#-n”索引:
- 字符 1 到 255 将存储为 CustomDocumentProperty "myCDP#~#-1",
- 字符 256 到 510 将存储为 CustomDocumentProperty "myCDP#~#-2",
- 字符 511 到 765 将存储为 CustomDocumentProperty "myCDP#~#-3",
- 字符 766 到 1000 将存储为 CustomDocumentProperty "myCDP#~#-4"
您将需要编写一个函数,例如 function getMyCDPstring(CDPNames as string),它必须检索、连接和 return 所有子字符串。您还需要一个托管的 delMyCDP 函数来删除所有数据包。