2012-11-12 6 views
5

C#で作成したワークシートをWorkbook.SaveAsメソッドを使用して保存しています。 XlSaveAsAccessMode引数は私に問題を与えています。excelワークシートを共有に保存しました。C#の保護されていない読み取り専用モード

xlSharedはワークシートを保護モードで保存するため、ユーザーはチャートで遊んで慎重に調べることができません。基本的には、データを参照できないデッドチャートとして表示されます。

xlExclusiveは、ユーザーが本の保護されていないアクセスを保存することを許可します。他のユーザーにはまだ死んだグラフが表示されます。

ワークシートを誰もが閲覧して調べることができるモードで保存し、グラフで遊んで、シリーズをデータポイントなどに接続できるようにする必要があります。同時に、変更を保存してファイルを上書きします。 C#COM Excel APIを使用してこれをどのように達成できますか?

参照 -

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(v=vs.80).aspx

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlsaveasaccessmode.aspx

答えて

5

まず修正に対してパスワードを使用して、ファイルを保存する - あなたはダイアログとして保存でこれを行うことができます(上のツールドロップダウンの下でダイアログの下部にあります)。また、読み取り専用の推奨チェックボックスをオンにすると、ファイルに対して読み取り専用モードが強制されます。

ユーザーがファイルを開くと、Excelは書き込みパスワードを要求しますが、そのパスワードを持たないユーザーは強制的に読み取り専用モードになります。読み取り専用のmdoeでは、ユーザーはファイルを変更できますが、ファイルシステムの読み取り専用属性に関係なく、元のファイルには保存できません。ファイルの新しいコピーを新しい名前(または別のフォルダ内の同じ名前)。あなたはまた、WorkBookBeforeSaveイベントを処理し、元のブックのコピーを識別するための情報を追跡してワークブックを更新することができます

oWorkbook.SaveAs (oWorkbook.Path + @"\Workbook.xls", 
    Excel.XlFileFormat.xlWorkbookDefault, 
    missing, 
    "WritePassword", // password against modification 
    true,    // read-only recommended 
    false, 
    Excel.XlSaveAsAccessMode.xlNoChange, 
    missing, 
    missing, 
    missing, 
    missing, 
    missing); 

は、プログラムあなたのような何かを行うことができ、これらのプロパティを使用してブックを保存します。これにより、元のファイル名で保存されたコピーが別のフォルダに保存されます。 (私はこの特定のイベントに精通していませんが、処理中に保存操作をキャンセルすることさえできるかもしれません)。

ファイルを完全に制御できない限り(これはExcelのみでは不可能です)、ユーザーはあなたのファイルのコピーを作成しますが、上記の設定では、元のままで新しいコピーを保存する必要があります。これはあなたの問題を解決しますか?

+0

ありがとうございました。これらの目的を達成するためにWorkBook.SaveAsコールの例を挙げることができます。つまり、誰もが読み取り専用で保護されていないファイルへのアクセスを許可していますか?これは日々の報告プロセスの一環であるため、私はこれを計画的に行う必要があります。他のユーザーに無防備なアクセスを可能にするためにXlSaveAsAccessModeに設定する価値はありません。 XlSaveAsAccessModeのすべての値は、私以外の他のユーザーのワークシートをロックするようです。 – user236215

+0

@ user236215例を使って答えを更新しました。これは、ワークブックに適切な設定を保存する必要があります。これを実装する前に、Excelで作成する通常のブック(プログラムではない)で試してみて、ユーザーにとってどのように機能するかを確認してください。私はこれがあなたが必要とすることをすると思います。 – xxbbcc

+0

ありがとうございます。私は本当にあなたの助けに感謝します。私は明日の朝にこれを試してみると、それがどのように行ったかを伝えます。別の関連する質問があります。私はテンプレートファイルから自分のファイルを作成しています。現在、テンプレートには書き込みアクセス権があります。私はテンプレートを使って新しいファイルを開きます。変更してレポートとして保存してください。今、テンプレートを読み取り専用にすると、それは私の流れにどんな影響を与えますか?私は明日これをテストするつもりです。基本的には、テンプレートを読み取り専用、保護、ロックするようにしたいので、誰も私が変更することはできません。 – user236215

関連する問題