にiManageの制限を回避するためにどのように我々は、WebサーバーからExcelシートを引っ張るExcelのVSTOアドインを開発し、ユーザーがシート上のデータを操作することを可能にしています。それはファイルのローカルコピーで動作しますが、私たちはそのコピーを気にしません。しかし、私たちのクライアントの中には、 "iManage Integration for Office"もインストールされており、これらのクライアントは奇妙な動作を経験します。この環境では、Closeイベントをキャンセルすることはできません。ユーザーは、当社のいずれかのファイルを開き、変更を行う場合は、Excel VSTOアドイン
は具体的には、それから、ファイルを閉じ、当社のイベントハンドラ火災や(サーバー上のデータへの)変更を保存するためにそれらを求められます。彼らがキャンセルを選択した場合、または保存を選択して何らかの理由で保存が失敗した場合、ファイルを開いたままにするために、キャンセル= trueを設定します。通常、これは完全に機能します。 iManageとそれらのクライアントのために
、ファイルがとにかく閉じます。私たちのコードがファイルのローカルコピーを保存していれば、ファイルはただ閉じます。ローカルコピーが保存されていない場合、iManageのプロンプトが表示された後、ファイルを保存するかどうかを尋ねるプロンプトが表示されます。ここから、ユーザーは[キャンセル]をクリックしてファイルを開いたままにできます。しかし、ユーザーは最初にキャンセルをクリックした後に2番目のプロンプトが表示されるのが混乱していると報告しています。そして、彼らはiManageアドインを無効にするつもりはありません。できればiManageプロンプトが表示されないように、ファイルを開いたままにしたいと考えています。クライアントは私のために設定したテスト環境(エクセル2010)での作業
は、私はいくつか試してみました:
- 私はワークブックレベルBeforeCloseやアプリケーションレベルWorkbookBeforeCloseにキャンセル設定しようとしたが、どちらも、私はWorkbookBeforeCloseのための私のハンドラは、ブックレベルのイベントハンドラでそれを登録することで、最後に登録されていることを確認してみました(iManageが有効になっている時はいつでもファイルがまだクローズ)
- を働きました。何の変化
- 私は手動ですべての作業を行いローカルモードに切り替えるためにiManageリボンを使用することはできませんが、私は/どのように私はコードをその変更を行うことができるかどうかわかりません。
- 私はGlobals.ThisAddIn.Application.COMAddInsにiManageアドインを見つけることができます。私はConnect = falseを設定しようとしましたが、管理者だけがaddinを接続/切断できるというエラーが発生します。
- 閉じるイベント中にローカルファイルを保存し、次にSaveAsを実行して2番目のコピーを作成します。 2番目のコピーがアクティブになり、iManageがそれを閉じます。元のローカルファイルを再度開きます。ユーザーにとってはかなりいいようですが、古いファイルのセルに対するCOM参照の束があります。これらはすべてゴミです。私はおそらくループし、それらをシリアル化し、新しいファイルで再作成することができますが、それはコード化と実行に時間がかかりますので、まず他のアイデアを探しています。
私は、ユーザーが余分な何かをせずに、開いているファイルを保つことができる方法はありますか?
UPDATE
iManage 9.3.0.0およびExcel 2010を使用して、私は職場の統合インタフェース・ライブラリー(実施例)を参照してVBAマクロを作成しました。イベントは発生しますが、ファイルはまだ閉じます。 Savedプロパティを設定せずグリッドに入力すると、保存するかどうかを尋ねるメッセージがiManageから常に表示されます。
Private WithEvents oWS As iManageExtensibility
Private Sub oWS_DocumentBeforeClose2(ByVal Doc As Variant, IgnoreIManageClose As Boolean, Cancel As Boolean)
IgnoreIManageClose = True
Cancel = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set oWS = Application.COMAddIns("WorkSiteOffice2007Addins.Connect").Object
Cancel = True
ActiveWorkbook.Saved = True
End Sub
この詳細な回答はありがとうございます。私はすぐにそれを試してみます。 – Mishelle
これは機能しませんでした。私はDocumentBeforeClose2のイベントハンドラをCOMアドインオブジェクトに追加し、ファイルを閉じると起動します。これらの変数のいずれかをtrueに設定しても効果はありませんでした。保存されていない変更があると、iManageプロンプトが表示されます。そうでなければファイルが閉じます。 – Mishelle
私は自分のdev環境を話すことができません。 DocumentBeforeClose2イベントを処理し、保存されていないドキュメントを閉じ、イベントシグニチャのIgnoreIManageCloseおよびCancelパラメータをプログラムでTrueに設定します。その結果、文書が閉じることはありません。同じテストを2度実行しました。最初はOffice 2016 + FileSite 9.3.1ビルド、次にOffice 2013 + FileSite 9.0.6ビルドでした。おそらくあなたのテストハーネスにあなたの動作のいくつかを示しますか? – fivetoniner