2011-09-12 4 views
2

데이터베이스 응용 프로그램에서 Excel 파일로 데이터를 입력하는 데 VB.net 2005를 사용하고 있습니다.Excel 시트 다시 보호, 자동 필터 활성화

시트의 보호를 해제하고 이름이 지정된 범위를 사용하여 특정 셀에 데이터를 입력 한 다음 시트를 다시 보호하십시오.

자동 필터링 기능을 사용하는 것으로 보호 된 파일을 실행할 때까지 지금까지 문제가 없었습니다. 시트를 다시 보호 할 때 autofilter 드롭 다운을 허용하면서 시트를 보호 할 수 없습니다. 자동 필터의 드롭 다운 화살표는 비활성화되고 비활성화됩니다.

다음 코드를 사용하여 데이터를 입력 한 후 시트를 다시 보호하십시오.

If bolProtected = True Then 
    For i = 0 To intProtectIndexes.Length - 1 
     objExcel.Sheets(intProtectIndexes(i)).Select() 
     objExcel.ActiveSheet.Protect(strPassword) 
    Next 
End If 

Tim의 링크 코드를 사용해 보았습니다.

objExcel.Sheets(intProtectIndexes(i)).Select() 
objExcel.ActiveSheet.Protect(Password:=strPassword, Contents:=True) 
objExcel.activesheet.enableautofilter = True 

여전히 채워진 워크 시트에는 자동 필터 드롭 다운이 비활성화되어 있습니다.

VBA에서 매크로 만들기 및 사용 :

ActiveSheet.Protect(Contents:=True, AllowFiltering:=True) 

가 잘 작동합니다. 시트가 보호되어 있고 자동 필터 드롭 다운을 사용할 수 있습니다. 그러나 VB.net 프로젝트에서 동일한 코드를 사용하면 드롭 다운이 활성화되지 않습니다.

+0

당신이 무엇을 의미합니까 "자동 필터링 옵션을 허용하면서 보호하기 위해 수없는 것"시도? 어쩌면이 도움이 될 수 있습니다. http://office.microsoft.com/en-us/excel-help/enable-autofilter-functionality-for-a-protected-worksheet-HA001098270.aspx –

+0

시트를 프로그래밍 방식으로 다시 보호 할 때, 데이터를 삽입하기 전에 있던 자동 필터는 더 이상 사용할 수 없습니다. 나는 당신이 준 링크가 답을 가지고 있다고 생각합니다. 대답을하면, 나는 그것을 시험하고 그것이 효과가 있는지보고 당신에게 신용을 줄 것입니다. – KevenDenen

답변

3

With objExcel.Sheets(intProtectIndexes(i)) 
    .Protect(Password:=strPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True) 
    .EnableAutoFilter = True 
End With 

또는

With objExcel.Sheets(intProtectIndexes(i)) 
    .Protect (Password:=strPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True) 
End With 
+0

두 번째 옵션은 매력처럼 작동했습니다. Stats는 Sheets() 객체에서는 작동하지만 ActiveSheet에서는 작동하지 않습니다. – KevenDenen

+0

다행이 당신을 위해 일했습니다. 두 옵션 모두 효과가 있었지만 나는 가질 수있었습니다. 첫 번째 옵션은 반드시 UserInterfaceOnly : = True를 필요로합니다. – Reafidy

+0

첫 번째 옵션을 시도하지 않았습니다. 나는 그것이 또한 효과가있을 것입니다. – KevenDenen