2016-08-24 26 views
1

私のExcelファイルには2枚のシートがあり、 "英語"というタイトルのシートと "フランス語"というシートがあります。保護されたワークシートに変更を加える

Valid XHTML

私はプログラム的に私のブックを開くと、何の問題もなく、私の英語のシートを編集します。 2枚目の用紙を開くと、次のエラーが表示されます。

The cell or chart you're trying to change is on a protected sheet. To make a change, unprotect the sheet. You might be requested to enter a password.

2枚目のシートをどのように編集する必要がありますか?

Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 

Workbook wb = excel.Workbooks.Open(fileLocation); 

ws1.Range["E5"].Value = StartDate; 
ws1.Range["G5"].Value = EndDate; 


Worksheet ws = wb.Worksheets.get_Item("French"); 
ws.Select(Type.Missing); 

ws.Range["E5"].Value = StartDate; // <- Crashes here 
ws.Range["G5"].Value = EndDate; 

答えて

2

ワークシートは保護されているため、修正する前に保護を解除する必要があります。パスワードがわからない場合は

Worksheet ws = wb.Worksheets.get_Item("French"); 

// Check for protection and unlock the worksheet 
If ws.ProtectContents { 
    ws.Unprotect("PROTECTION_PASSWORD"); 
} 

ws.Select(Type.Missing); 

ws.Range["E5"].Value = StartDate; // <- Crashes here 
ws.Range["G5"].Value = EndDate; 

、あなたはブルートフォースすることができ、コードin this questionを使用して、古いExcelファイルに簡単にそれを(あなたがC#にポートにそれをする必要がありますが、それは些細なはずです)。 Excel 2013以降では、ブルートフォースが機能しなくなるため、その問題で発生している問題に注意してください。


あなたはその後シートを再保護することがありますが(そうでなければ、大幅誰かは、ワークシートに置くことを決めた保護を除去することにより、ファイルの構造を変更した。これを行うには、あなたがしたいですよWorksheet.Protectを使用する可能性があります。Worksheet.ProtectContentsWorksheet.ProtectDataWorksheet.ProtectDrawingObjectsWorksheet.ProtectFormatting、およびWorksheet.ProtectionModeのような古い保護パラメータを保存して、同じ方法で再保護することをお勧めします。パスワードを知っている代わりにパスワードクラッカーを使用している場合ルーチンからクラックされたパスワードを取得し、それをへのPassword引数として使用することもできます210方法。これにより、保護機能を以前と同じようにシームレスに設定できます。

+0

こんにちは@Mikegrann、これは絶対的な魅力のように働いた。回答いただきありがとうございます。 – Master

関連する問題