2016-05-09 5 views
1

私は既存のブックに追加して動的に塗りつぶす新しいシートにMicrosoft.Excel.Interopで次のコードを実行しようとしましたIが得られたブック内の同じバグ有するExcel Interop FreezePanesを使用している間のバグ:結果のブックの構造が失われる

worksheet.Application.ActiveWindow.SplitRow = 4; 
worksheet.Application.ActiveWindow.SplitColumn = 1; 
worksheet.Application.ActiveWindow.FreezePanes = true; 

毎回:凍結ペインと既にあったすべての他のワークシートを、構造化されていないとなる(列Bの半分が列Cに重なる、表示目的のために、私はこれらの3つのプロパティを設定します他の興味深いグラフィカルな詳細...)。

他のExcelオートメーションライブラリ(ClosedXMLなど)を調べているうちに、他の人が直接XMLコードを変更するため、ActiveWindowは使用せず、ワークシート自体を直接使用しています。

私の問題は、ActiveWindowのプロパティを不適切に変更したことに起因する可能性がありますか? もしそうなら、誰かがActiveWindowを経由せずにペインを凍結することができるかどうかを知っていますか? いいえ、誰かがそれがどこから来るかというアイデアを持っていますか?事前に

おかげ

Roddhes

答えて

0

はあなたがプロパティを設定する前に、適切なワークシートをアクティブにしましたか?私のようなものを意味する:

Worksheet.Activate(); 
Worksheet.Application.ActiveWindow.SplitRow = 4; 
Worksheet.Application.ActiveWindow.SplitColumn = 1; 
Worksheet.Application.ActiveWindow.FreezePanes = true; 

ヘルプとしては、あなたがここで一番上の行を凍結するためのいくつかのコードサンプルを見つけることができます(追加コードの改善のためにそこにコメントを必ずお読みください):https://stackoverflow.com/a/5060792/232530

それはと思われますフリーズペインは、OpenXMLを使用して行うこともできます。 Freeze Panes in OpenXml SDK 2.0 for Excel document

+0

はい使用する前にワークシートをアクティブ化しました。このコードを実行すると、ペインはワークシート上で適切に固定されますが、唯一の問題はブック内の他のすべてのシートの付随する損傷です。 – Roddhes

+1

私はOpenXMLを試してみましたが、他のXML interopライブラリと同様に動作しますが、使用するにはMicrosoft.Interopを介してブックを閉じてからOpenXMLで開く必要があります。 1つのライブラリのみを扱う方が好きです。 – Roddhes

+0

ウィンドウをアクティブにする方法とワークシート変数を割り当てる場所をより正確に記述できますか?あなたはワークシートを動的に作成すると述べました。作成された方法によって、ペインをフリーズした後に説明された効果が生じます。既存のペインをフリーズして、それが正しく動作しているかどうかを確認してください。 –

関連する問題