我在哪里可以保存用户输入的设置?

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 函数来删除所有数据包。