VBA。
第1步
MS Project文件已打开;
用户启动宏;
表格打开;
用户输入路径;
用户点击“保存”;
用户关闭表单;
用户关闭MS Project文件。
第2步
用户打开MS Project文件;
用户赢得宏;
表格打开;
表单显示用户为“阶段1”注册的路径;
问题
如何在用户在表单中第二次打开表单(步骤2)时显示(步骤1)中保存的路径?
换句话说,在表单关闭后(步骤1),文本框的值被保留了?
此文本框值是否可以保存在MS Project文件中?
或者我应该将其保存在单独的文件中?
这怎么做得最好?
答案 0 :(得分:2)
添加自定义文件属性以在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
信息将存储在文件本身中,不同的文件可以存储不同的路径,如果在另一台计算机上打开,则路径仍然可用。
要在用户的计算机上保存单个值,无论打开哪个文件,请使用SaveSetting和GetSetting,如上面评论中Sam所述。它们不与文件一起存储,也不会在其他计算机上显示。
答案 1 :(得分:0)
项目的任务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"
答案 2 :(得分:0)
继Rachel的答案以及对Jerred S.的回应注释,很容易克服CustomDocumentProperties的255 char限制并在那里存储 War and Peace 。编写函数 storeMyCDPstring(CDPNames as string,CDPVal as string)。它需要将CDPVal切换为不超过255个字符的数据包,并将它们存储为索引的CustomDocumentProperties。例如,您希望在名为“MyCDP”的CustomDocumentProperty中存储1000个字符串。您采用仲裁命名约定 - CDP将被“#〜#-n”索引:
您需要编写一个函数,例如函数getMyCDPstring(CDPNames as string),它必须检索,连接并返回所有子字符串。您还需要一个托管的delMyCDP函数,它将删除所有数据包。