私はVB.net 2005を使用してデータベースアプリケーションからExcelファイルにデータを入力しています。Excelシートを再プロテクトし、オートフィルタを有効にする
シートの保護を解除し、名前付き範囲を使用して特定のセルにデータを入力してから、シートを再保護します。
自動フィルタリングを有効にして保護されているファイルを実行するまで、これまでのところうまくいきました。シートを再保護すると、オートフィルターのドロップダウンを許可しながらシートを保護しているようには見えません。オートフィルタのドロップダウン矢印はグレー表示され、無効になっています。
次のコードを使用して、データを入力した後でシートを再保護します。
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プロジェクトで同じコードを使用すると、ドロップダウンが有効になりません。
を試してみてください?たぶんこれが役立ちます:http://office.microsoft.com/en-us/excel-help/enable-autofilter-functionality-for-a-protected-worksheet-HA001098270.aspx –
プログラムでシートを再保護すると、データを挿入する前に配置されていたオートフィルタは使用できなくなります。私はあなたが与えたリンクが答えを持っていると思います。答えを出して、私はそれを試して、それがうまくいくかどうかを見て、あなたに信用を与えるでしょう。 – KevenDenen