VBA: презентации PowerPoint открываются только для чтения

Я пытаюсь открыть, изменить и сохранить презентацию, но она всегда открывается только для чтения:

If measTypesDict.Exists(MeasType) = False Then
    Dim targetPath As String
    Dim newPres As PowerPoint.presentation

    measTypesDict.Add MeasType, New Dictionary

    Set newPres = PowerPoint.Application.Presentations.Add(msoFalse)

    targetPath = rootDir & "\final\" & MeasType & ".ppt"
    newPres.SaveAs targetPath
    ' newPres.Close that is what's been missing

    targetPresentationsDict.Add MeasType, Presentations.Open(targetPath, ReadOnly:=msoFalse, WithWindow:=msoFalse)
End If

Из документации Microsoft:

The ReadOnly parameter is used to open a presentation as Read-Only. 
The following example opens a file named test.ppt as Read-Only.

   Sub OpenPresentationReadOnly()
      Presentations.Open "c:\test.ppt", msoTrue
   End Sub

Может ли кто-нибудь дать мне подсказку, почему это так? Я являюсь владельцем целевой папки и имею полный контроль в соответствии с настройками папки.


person Stefan Falk    schedule 20.12.2013    source источник
comment
Файл уже сохранен как Read Only?   -  person Siddharth Rout    schedule 20.12.2013
comment
Я думаю, что нашел решение. Я добавлял презентацию, используя Presentations.Add(msoFalse)' and then saved is as newPres.SaveAs targetPath. **Now** I call newPres.Close`, и снова открывал эту презентацию. Теперь у меня есть доступ на запись - но мне не очень нравится тот факт, что мне приходится его заново открывать..   -  person Stefan Falk    schedule 20.12.2013
comment
Если делаешь сохранение, то зачем заново открывать? он уже открыт...   -  person Siddharth Rout    schedule 20.12.2013
comment
Я отредактировал код - посмотрите   -  person Stefan Falk    schedule 20.12.2013
comment
Попробуйте это targetPresentationsDict.Add MeasType,newPres   -  person Siddharth Rout    schedule 20.12.2013
comment
Я не видел леса, так как меня окружало слишком много деревьев..   -  person Stefan Falk    schedule 20.12.2013


Ответы (1)


Вы можете попробовать это:

   Sub OpenPresentation()
      Presentations.Open "c:\test.ppt"
   End Sub

Надеюсь, поможет.

person Sai Avinash    schedule 20.12.2013
comment
Этот участник не существует (support.microsoft.com/kb/162555), и я думаю, что вы ссылаются на API Excel здесь. - person Stefan Falk; 20.12.2013
comment
@StefanFalk .. просто используйте выше без каких-либо атрибутов - person Sai Avinash; 20.12.2013