首页 文章

使用密码保护VBA项目

提问于
浏览
-1

我的VBA加载项将一些工作表复制到新工作簿中 . 虽然我的加载项是按密码生成的,但新工作簿在生成时不受密码保护 . 因此用户可以读取其中的代码 .

我试图使用受保护的属性来隐藏代码,但它似乎没有工作 .

用于生成新工作簿的代码:

Sub CreateNewWorkbook()

On Error GoTo LabelErro

Application.ScreenUpdating = False

Set NewWorkBook = Workbooks.Add

Dim currentSheet As Worksheet
Dim sheetIndex As Integer
sheetIndex = 1

With ThisWorkbook

    .IsAddin = False

    .Sheets("Ajuda").Copy Before:=NewWorkBook.Sheets(sheetIndex)

    .Sheets("Fronteira").Copy Before:=NewWorkBook.Sheets(sheetIndex)

    .Sheets("Correl").Copy Before:=NewWorkBook.Sheets(sheetIndex)

    .Sheets("Atributos").Visible = True
    .Sheets("Atributos").Copy Before:=NewWorkBook.Sheets(sheetIndex)
    .Sheets("Atributos").Visible = xlVeryHidden

    .Sheets("Pesos").Copy Before:=NewWorkBook.Sheets(sheetIndex)

    .Sheets("Calculos").Copy Before:=NewWorkBook.Sheets(sheetIndex)

    .Sheets("Hidden").Visible = True
    .Sheets("Hidden").Copy Before:=NewWorkBook.Sheets(sheetIndex)
    .Sheets("Hidden").Visible = xlVeryHidden

    .IsAddin = True

End With

With NewWorkBook

    .Sheets("Hidden").Visible = xlVeryHidden
    .Sheets("Calculos").Visible = xlVeryHidden
    .Sheets("Pesos").Range("C1").Formula = "=INDIRECT(""D"" & Hidden!B1+Hidden!B4+1)"
    .Sheets("Pesos").Range("C2").Formula = "=INDIRECT(""E"" & Hidden!B1+Hidden!B4+1)"
    .Protect Password:="teste", Structure:=True, Windows:=True

End With

Exit Sub

LabelErro:

        ThisWorkbook.IsAddin = True

End Sub

1 回答

  • 1

    正如roryap所说,一个简单的谷歌“Excel VBA设置工作簿密码”返回了许多结果 . 这是我看过的第一个 .

    ActiveWorkbook.Protect Password:="test", Structure:=True, Windows:=True
    

    expression.Protect(密码,结构,Windows)表达式必需 . 一个返回Workbook对象的表达式 .

    密码可选变体 . 一个字符串,它指定工作表或工作簿的区分大小写的密码 . 如果省略此参数,则可以在不使用密码的情况下取消保护工作表或工作簿 . 否则,您必须指定密码以取消保护工作表或工作簿 . 如果忘记密码,则无法取消保护工作表或工作簿 . 最好将密码列表及其相应的文档名称保存在安全的地方 .

    结构可选变体 . 为了保护工作簿的结构(表单的相对位置),则为True . 默认值为False .

    Windows可选Variant . 是的,以保护工作簿窗口 . 如果省略此参数,则窗口不受保护 .

相关问题