打开共享文件时的VBA错误 - 读取标记被视为尝试修改

时间:2013-11-21 14:44:15

标签: vba tags powerpoint powerpoint-vba office-2010

我遇到了一个奇怪的错误,正在寻找一些见解。

情境:

共享驱动器上的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)。 看起来这样只涉及“读取”操作,但代码在指定的行处抛出错误。

为了使事情变得更有趣,如果我只是将文件标记为“只读”,保存并打开它,则行为不同。差异似乎是我可以在这种情况下修改文件 - 我只是无法保存它。但是这个文件完全无法编辑,即使我不保存它。并且上述“读取”操作被视为“修改”......

我有以下问题:

  1. 是否有文件属性我可以在VBA中读取告诉我这是一个“无法修改”的文件?我正在寻找类似于ActivePresentation.ReadOnly的东西,但这是为“只读”文件设置的,这是不同的。
  2. 为什么行If Len(oSl.Tags(tagName)) > 0 Then被视为“修改文件”操作?
  3. 很难重现这个错误,因为我真的需要让两个用户打开同一个文件(将文件保存为只读是不够的)才能实现。期待您的见解/意见/答案!

0 个答案:

没有答案