2017-05-26 64 views
1

我有一個受密碼保護的PowerPoint文件,因爲坦率地說,與文件交互的操作員是計算機文盲,並且如果它是可編輯的,可能會意外銷燬該文件。如何允許VBA代碼在只讀PowerPoint文件中運行?

我應該說,之前,我更深刻......我搜查,發現了這個問題,它有一個解決方案,不會在這種情況下工作:Click Me

我寫了一個簡單的VBA腳本,讓他們搜索零件號碼,而不是使用PowerPoint幻燈片找到正確的零件號(這可以追溯到未用於計算機或甚至不知道PowerPoint是什麼)。

無論如何,腳本在我的電腦上運行良好,但顯然我必須輸入密碼才能編輯VBA代碼。當我嘗試以只讀模式運行代碼時,出現錯誤"Run-time error '-2147467259 (80004005)' Presentation (unknown member) : Invalid request. Presentation cannot be modified."

本質上,我看到代碼無法在只讀模式下執行該文件。

誤差實際上發生在這個片段的代碼:

'Follow the hyperlink to opent the correct file 
    If Len(Dir$(ActivePresentation.Path & "\" & sFile)) > 0 Then 
     ActivePresentation.FollowHyperlink Address:=sFile 
    Else 
     MsgBox "No file exists at path " & ActivePresentation.Path & "\" & sFile 
    End If 
就行 ActivePresentation.FollowHyperlink Address:=sFile

任何我可以做的,以不同的方式打開PDF文件,在只讀模式下的演示文稿?

+0

爲什麼沒有鏈接的問題/解決方案在這種情況下工作? –

+0

由於風險太大,我無法取消保護工作表。在過去,我們的一些員工本着誠意,試圖糾正一個問題,最終重新編程了一個直流轉矩工具。我想完全避免一些不小心搞亂文件的人的困惑和頭痛。 – ilarson007

回答

0

您無法打開密碼保護文件而不提供密碼。 要通過提供密碼打開VBA文件,你可以這樣做:

設置oPres = Presentations.Open( 「C:\ TEMP \ open.pptx :: PWD ::」)

其中c :\ temp \ open.pptx是文件的路徑,pwd是密碼。

由於此文件已打開,您的同事仍然可以對其進行編輯,因此您可能會考慮將真實文件複製到臨時文件夾,可能在某些不太可能的情況下,打開復印件而不是原件。然後在下次運行任何代碼時刪除任何現有的副本。

+0

我很難理解爲什麼它不會打開,因爲我打開了一個單獨的文件(一個pdf文件)而不是密碼保護的PowerPoint文件。 PPT文件打開一次並保持打開狀態。 – ilarson007

+0

您是否考慮使用ShellExecute來啓動PDF?如果你的谷歌加上VBA,你會發現一些例子。 –

相關問題