Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在哪里可以保存用户输入的设置?_Vba_Ms Project - Fatal编程技术网

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

Vba 在哪里可以保存用户输入的设置?,vba,ms-project,Vba,Ms Project,VBA. 步骤1 MS项目文件已打开 用户启动宏 表格打开 用户输入路径 用户点击“保存” 用户关闭表单 用户关闭MS项目文件 步骤2 用户打开MS项目文件 用户赢得宏 表格打开 表单显示用户为“阶段1”注册的路径 问题 当用户第二次打开表单时(第2步),如何使表单显示在保存的路径中(第1步)? 换句话说,在表单关闭后(步骤1),文本框的值被保留了吗 此文本框值是否可以保存在MS项目文件中? 还是应该将其保存在单独的文件中? 如何最好地完成此操作?添加自定义文件属性以在MS Project文件

VBA.

步骤1
MS项目文件已打开
用户启动宏
表格打开
用户输入路径
用户点击“保存”
用户关闭表单
用户关闭MS项目文件

步骤2
用户打开MS项目文件
用户赢得宏
表格打开
表单显示用户为“阶段1”注册的路径

问题
当用户第二次打开表单时(第2步),如何使表单显示在保存的路径中(第1步)?
换句话说,在表单关闭后(步骤1),文本框的值被保留了吗

此文本框值是否可以保存在MS项目文件中?
还是应该将其保存在单独的文件中?

如何最好地完成此操作?

添加自定义文件属性以在MS Project文件中存储信息。例如:

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
信息将存储在文件本身中,不同的文件可以存储不同的路径,如果在另一台计算机上打开,该路径仍然可用

要在用户计算机上保存单个值,无论打开了哪个文件,请使用和,如Sam在上述评论中所述。这些内容不会与文件一起存储,并且在其他计算机上不可见。

项目的任务0(项目摘要任务)很少使用,因此其注释字段可以作为存储长数据的好位置。与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的评论,很容易克服CustomDocumentProperties的255字符限制,并在其中存储战争与和平。编写一个函数,例如functionstoreMyCDPstring(CDPNames作为字符串,CDPVal作为字符串)。它需要将CDPVal切分为不超过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

您需要编写一个函数,比如函数getMyCDPstring(CDPNames as string),它必须检索、连接并返回所有子字符串。您还需要一个托管的delMyCDP函数,该函数将删除所有数据包。

请查看SaveSetting和GetSetting方法