代码之家  ›  专栏  ›  技术社区  ›  Torben Klein

检查Excel文件是否受密码保护

  •  1
  • Torben Klein  · 技术社区  · 14 年前

    我试图通过VBA打开一个Excel(xlsm)文件。它可能使用(已知的)密码保护,也可能不使用。我正在使用以下代码:

    On Error Resume Next
    Workbooks.Open filename, Password:=user_entered_pw
    opened = (Err.Number=0)
    On Error Goto 0
    

    现在,如果工作簿有密码,则可以正常工作。但如果没有保护,就不能打开。显然,如果工作簿结构保护也处于活动状态,那么这是XL2007中的一个错误。( http://vbaadventures.blogspot.com/2009/01/possible-error-in-excel-2007.html

    我试过:

    Workbooks.Open filename, Password:=user_entered_pw
    If (Err.Number <> 0) Then workbooks.open filename
    

    如何避开这个?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Torben Klein    14 年前

    记录在案-原因确实是我正在打开的工作簿的结构保护。

    在结构保护失效的情况下, Workbooks.Open 使用密码即使没有密码也不会失败。

        2
  •  0
  •   user225626    14 年前
    1. 使用1004错误处理专用于此特定问题,并在错误恢复下一步为所有其他子。

    2. Workbooks.Open filename, Password:=user_entered_pw 还要添加另一个不带密码参数的行语句。