5

COMインターフェイスを使用して、データベースを読み取り、分析を行い、Excelスプレッドシートの統計を更新する.NETアプリケーションがあります。ブックを開く(または、既に開いている場合は検出する)までのアプリケーションがあり、更新する必要のあるシートを見つけます。

アプリケーションの実行中に、ユーザーが引き続きExcelを操作できる(アプリケーション/ワークブックを閉じる、データを変更するなど)という問題が発生しています。アプリがデータを噛んでいる間はExcelを非表示にすることを検討しましたが、これはアプリケーション全体であり、ユーザーが開いているスプレッドシートを操作できなくなります。

COMインターフェイスを介して変更からExcelをロックする方法はありますが、それでもユーザーはExcelを表示/読み取りできますか?または、 1つのブックを非表示/ロックする方法はありますか?

4

5 に答える 5

3
Application.Interactive=false;
于 2013-05-29T12:13:06.730 に答える
1
    Application.Interactive=false;

Sid が示唆するように、次の変更もお勧めします。

    Application.ScreenUpdating = false; // to avoid screen flicker
    Application.DisplayAlerts = false; // if you wish to suppress most excel messages
    Application.EnableEvents = false; // if there is vba in the workbook you wish to avoid triggering

    Application.Calulation = xlCalculationManual; // if it's a calc intensive automation

自動化の前にステータスを収集し、自動化が終了したらこれらのプロパティをすべて元に戻すことをお勧めします。

于 2014-02-03T19:22:50.357 に答える
0

とはトリックWorksheets("Sheet1").protect( <password> )unprotect(<password>)行いますか?

于 2012-12-24T16:30:42.983 に答える
0

私が考えられる最善の方法は、ブックを開いてすぐにブック全体を非表示にすることです。そうすれば、相互運用機能を介して対話することはできますが、ユーザーはそれを表示できません (特に再表示しない限り、多くのユーザーはその方法を知らないと思います)。

xlWorkbook.Windows[1].Visible = false;
于 2012-12-26T22:55:12.247 に答える
0

... 私が考えることができる唯一の実際にインテリジェントな方法は、Excel アプリケーションの新しいインスタンスを作成し、それを非表示にして、そこで変更を行うことです。

次に、ブックが既に開いている場合は、ユーザーに通知して閉じるように依頼します。

于 2012-12-24T16:33:02.567 に答える