Сохранение в двух местах

У меня есть Project 2016 на Microsoft Surface pro 3 с полной версией Windows 10 и Office 365.

Я следовал инструкциям из 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. Он основан на более старой версии Project.

Сохраняет во второе место, но каждый раз вылетает и не сохраняет исходную копию.

Я не менял код, кроме расположения файла. Я переименовал 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

Мы используем планшет на строительных площадках, чтобы суперинтендант обновлял график работ в Project. Раньше все файлы сохранялись на сервер и он получал к ним доступ через VPN. Project очень медленно открывает файлы через VPN, несмотря на то, что файл очень маленький. Даже при хорошем соединении 4G или Wi-Fi.

Я пытался найти способ сохранить файлы на планшете, но сразу же синхронизировать их с сервером при сохранении.


person DavidZero256    schedule 10.08.2016    source источник
comment
смотри мой ответ ниже   -  person Shai Rado    schedule 14.08.2016


Ответы (1)


измените свою строку:

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
person Shai Rado    schedule 14.08.2016
comment
Большой! похоже, это работает хорошо. Для тех, кому нужно сделать то же самое, что и это... Единственная проблема заключается в том, что сохранение через VPN очень зависит от подключения. При плохом сигнале он будет сидеть там и долго сохранять. при хорошем сигнале это занимает всего несколько секунд. - person DavidZero256; 16.08.2016
comment
Ну, теперь проблема, с которой мы сталкиваемся, заключается в том, что они закрывают файл после того, как что-то испортили и предполагают, что он не был сохранен, потому что это не нажало на сохранение. Он не сохранился на их планшете, но сохранился на нашем сервере. Иметь это как событие BeforeClose - проблема. Я должен работать нормально, если мы сможем сделать это событие BeforeSave, которое будет работать правильно. - person DavidZero256; 12.10.2016