我遇到了一个奇怪的错误,正在寻找一些见解。
情境:
共享驱动器上的powerpoint文件由用户A打开。用户B现在想要打开同一个文件,并显示“以只读方式打开?”对话。用户点击“确定”。
打开文件,运行加载项(每当打开文件时)检查幻灯片上的某些标记,指示是否存在机密材料。这会导致以下函数出错:
Function taggedSlide(tagName As String)
' find the slide which is tagged with tagName
Dim oSl As Slide
Set oSl = Nothing
For Each oSl In ActivePresentation.Slides
If Len(oSl.Tags(tagName)) > 0 Then <<<<<<<<<<<<<<< this is the line that causes error
Set taggedSlide = oSl
Exit Function
End If
Next oSl
Set taggedSlide = Nothing
End Function
该函数表面上循环遍历演示文稿中的所有幻灯片,查找名为tagName
的标记,并返回幻灯片(或Nothing)。 看起来这样只涉及“读取”操作,但代码在指定的行处抛出错误。
为了使事情变得更有趣,如果我只是将文件标记为“只读”,保存并打开它,则行为不同。差异似乎是我可以在这种情况下修改文件 - 我只是无法保存它。但是这个文件完全无法编辑,即使我不保存它。并且上述“读取”操作被视为“修改”......
我有以下问题:
ActivePresentation.ReadOnly
的东西,但这是为“只读”文件设置的,这是不同的。If Len(oSl.Tags(tagName)) > 0 Then
被视为“修改文件”操作?很难重现这个错误,因为我真的需要让两个用户打开同一个文件(将文件保存为只读是不够的)才能实现。期待您的见解/意见/答案!