Project 2016 VBA,保存到两个位置

时间:2016-08-10 17:07:59

标签: vba synchronization windows-10 microsoft-project-vba

我有一台带有完整版Windows 10和office 365的Microsoft Surface pro 3.我已按照此链接中的说明进行操作

http://answers.microsoft.com/en-us/office/forum/office_2010-project/can-you-set-up-a-ms-project-file-to-automatically/68847860-3c47-49d5-a4a8-06124dd63196

但我似乎无法让它正常工作。也许是因为他是基于旧版本的项目。它保存到第二个位置,但每次都崩溃并且不保存原始副本。除了文件位置,我没有更改代码。我把flag20重命名为yes(我需要做的就是重命名吗?)

我一次经历了一步,崩溃就是这条线

FileCloseEx Save:=pjDoNotSave, noauto:=True

这是该计划:

Private Sub project_beforesave(ByVal pj As Project)
    Application.DisplayAlerts = False
    If ActiveProject.ProjectSummaryTask.Flag20 = False Then
        ActiveProject.ProjectSummaryTask.Flag20 = True
        ActiveProject.SaveAs Name:="c:\users\John\desktop\backuptest.mpp"
        FileCloseEx Save:=pjDoNotSave, noauto:=True 'Crashes here
    Else
        ActiveProject.ProjectSummaryTask.Flag20 = False
    End If
End Sub

点击链接查看原始代码。

想法?我做错了吗?

这就是我要做的事情。我们在施工现场使用此平板电脑,以便管理者更新项目中的作业计划。之前,我们将所有文件保存到服务器,然后通过VPN访问它们。这有效,但速度很慢。出于某种原因......即使文件非常小,项目也会在VPN上打开文件非常慢。即使有良好的4g连接或wifi。所以我一直试图找到一种方法来保存平板电脑上的文件,但在保存时立即与服务器同步。这种方式似乎是最好的方式,只要我能让它发挥作用。救命!大声笑。我的编程知识非常有限......我在大学里有1个C ++课程。但我在这里学习!提前谢谢。

1 个答案:

答案 0 :(得分:0)

改变你的行:

FileCloseEx Save:=pjDoNotSave, noauto:=True

使用:

prjApp.FileCloseEx pjDoNotSave, True

声明变量后,设置为New MsProject,Application

以下代码适用于我在电脑上完成的测试:

Private Sub Project_BeforeClose(ByVal pj As Project)

Dim prjApp          As MSProject.Application
Set prjApp = New MSProject.Application

Application.DisplayAlerts = False
If ActiveProject.ProjectSummaryTask.Flag20 = False Then
    ActiveProject.ProjectSummaryTask.Flag20 = True
    ActiveProject.SaveAs Name:="c:\users\John\desktop\backuptest.mpp"
    prjApp.FileCloseEx pjDoNotSave, True
Else
    ActiveProject.ProjectSummaryTask.Flag20 = False
End If

End Sub