2015-09-29 118 views
-1

我的VBA加載項將一些表單複製到新的工作簿中。雖然我的加載項是按密碼項目,但新生成的工作簿在生成時不受密碼保護。所以用戶可以讀取其中的代碼。使用密碼保護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對象的表達式。

密碼可選變體。一個字符串,它爲工作表或工作簿指定區分大小寫的密碼。如果省略此參數,則可以在不使用密碼的情況下解除工作表或工作簿的保護。否則,您必須指定密碼才能解除工作表或工作簿的保護。如果忘記密碼,則無法取消保護工作表或工作簿。將密碼及其相應文檔名稱列在安全的地方是個好主意。

結構可選變體。正確以保護工作簿的結構(工作表的相對位置)。默認值是False。

Windows可選變體。正確以保護工作簿窗口。如果省略該參數,則窗口不受保護。

+1

我仍然可以讀取工作簿的VBA代碼。即使在應用保護財產之後。 – Ihidan

+0

看到這篇文章.. http://stackoverflow.com/questions/17777770/vba-project-password-protect-with-sendkeys-not-working-correctly – MatthewD