問題タブ [office-automation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - サーバーでのエラー「ドキュメントが開いていないため、このコマンドは使用できません」
このコードを使用して、データを Word テンプレートに送信し、クライアントに送信します。
このコードはローカルで適切に機能しますが、このサイトを公開してサーバーに配置すると、このエラーが発生します。
ドキュメントが開かれていないため、このコマンドは使用できません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。例外の詳細: System.Runtime.InteropServices.COMException: ドキュメントが開かれていないため、このコマンドは使用できません。
ソース エラー: 現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
サーバーで開くことができないのはなぜですか?このエラーを解決するには?
私はWindows7、VS2010、SQLServer2008、office2010を使用しており、サーバーではWindows Server 2008、IIS7、office2010を使用しています。
サーバーでこのエラーが発生した場合、どうすればよいですか?
excel - Excel 2010 の接続文字列?
OLEDB を使用して Excel 2010 に接続しています。この操作に必要な接続文字列は何ですか?
vba - Outlook から Access サブルーチンを呼び出す - オブジェクト _Application のメソッド実行に失敗しました
Outlook で電子メールを受信したときに、MS Access でサブルーチンを実行しようとしています。
Access.Application オブジェクトとその Run メソッドを使用しています。
次のエラーが表示されます: Object _Application のメソッド実行に失敗しました。
「テスト」サブルーチンは、Checkdb モジュールの空のサブです (実際のサブを呼び出そうとしたが失敗した後)。
Office 2007 を実行しています。
c# - 複数の InfoPath 相互運用自動化インスタンス
Windows サービスを介して Office InfoPath 2010 の複数の並列インスタンスを自動化しようとしています。サービスからの Office の自動化がサポートされていないことは理解していますが、これは顧客の要件です。
他の Office アプリケーションを並行して自動化できますが、InfoPath の動作は異なります。
私が見つけたのは、いくつの並列呼び出しが行われたとしても、作成される INFOPATH.EXE プロセスのインスタンスは 1 つしかないということCreateObject("InfoPath.Application")
です。これとは対照的に、WINWORD.EXE の複数のインスタンスは、同様のメカニズムを介して作成できます。CreateObject("Word.Application")
この問題を再現するには、単純なコンソール アプリケーションを使用できます。
InfoPathTest クラスと WordTest クラス (VB) は別のプロジェクトにあります。
相互運用クラスは、単純にオートメーション オブジェクトを作成し、スリープしてから終了します (ただし、Word の場合は、より複雑なテストを完了しました)。
コンソール アプリを実行すると、(タスク マネージャーを介して) 2 つの WINWORD.EXE プロセスが並行して作成され、1 つの INFOPATH.EXE プロセスのみが作成されていることがわかります。実際、InfoPathTest の最初のインスタンスが ip.Quit を呼び出すと、INFOPATH.EXE プロセスが終了します。InfoPathTest の 2 番目のインスタンスが ip.Quit を呼び出すと、DCOM タイムアウト例外がスローされます。つまり、2 つのインスタンスが同じ基になるオートメーション オブジェクトを共有しているように見え、ip.Quit の最初の呼び出しの後、そのオブジェクトは存在しなくなります。
この段階では、ユーザー ログインごとにサポートされる INFOPATH.EXE は 1 つだけだと思いました。Windows サービスを拡張して 2 つの新しいプロセス (InfoPathTest と呼ばれるコンソール アプリケーション) を開始し、それぞれが異なるユーザー アカウントで実行されるようにしました。これらの新しいプロセスは、INFOPATH.EXE の自動化を試みます。
ここが興味深いところです。これは実際に機能しますが、一部のマシンでのみ機能し、なぜそうなのかわかりません。
そしてサービスコード ( AsproLockの助けを借りて):
InfoPathTest.exe プロセスは、前述の InfoPathTest.Test() メソッドを呼び出すだけです。
要約すると、これは機能しますが、特定のマシンでのみ機能します。失敗すると、2 番目の INFOPATH.EXE プロセスが実際に作成されますが、終了コード 0 ですぐに終了します。イベント ログには何も記録されず、コードにも例外はありません。
動作中のマシンと動作していないマシンを区別するために多くのことを調べましたが、今は行き詰まっています。
特に、複数の InfoPath インスタンスを並行して自動化する方法について他の考えがある場合は、ポインタを高く評価します。
c# - Inspectorを使用してOutlookの電子メールをプログラムで暗号化する
OutlookオブジェクトモデルでC#を使用しています(ライセンスのため、償還はオプションではありません)。電子メールメッセージを送信する前にプログラムで暗号化するのに問題があります。
暗号化ボタン(オンラインの例ではId 718)を表すと思われるCommandBarButtonへの参照を正常に取得できますが、プログラムで押すことはできません。CommandBarButton Execute()メソッドとSendKeysの両方を使用してみました(このコンテキストでsendkeysが有効かどうかはわかりません)。すべてのdebug.writelineステートメントは、ボタンがmsoButtonUp状態にあることを示しています。
私はこれで何日も遊んでいて、それを機能させることができないようです。アドバイスをいただければ幸いです。
c# - ドキュメントの生成後に Word ドキュメントからコントロール コントロールを削除する
Word ドキュメントのコントロール コントロールにコンテンツを挿入する C# ドキュメント生成コンポーネントがあり、すべてが正常に機能しています。
唯一の問題は、生成されたドキュメントにコンテンツ コントロールが残っており、個々の行やテキストを選択できないことです。
これらのコンテンツ コントロールを削除する必要があり、コンポーネントがコントロール コンテンツを変更するため、コンテンツ コントロール プロパティ「コンテンツの編集時にコンテンツ コントロールを削除する」がまさに探していたものだと思いました。しかし、うまくいきません。
私は何が欠けていますか?
c#-4.0 - WordアドインスローコレクションにRibbonButtonsを動的に追加するのは読み取り専用です
私はWordアドインにかなり慣れておらず、リボングループを追加しようとしています。各RibbonGroupに対して、RibbonMenuを動的に追加してから、グループ内のメニューにRibbonButtonsを追加します。
私は大げさな仕事をしました、そしてそれは大丈夫のようです、しかし私がどんなコレクションにでもアクセスするときはいつでも
例:group1.Items.add(new RibbonButton()); コレクションは読み取り専用だと言われます。
しかし、デバッグしたときに、コレクションのIsReadOnlyフラグがFalseに設定されていて、コレクションが読み取り専用ではないことを明確に示していますか?
私は何が欠けています。
outlook - OutlookでIsSearchSynchronousが失敗する
Outlookの自動化を使用して、カレンダーのアイテムを検索しています。そのために、IsSearchSynchronous()メソッドを使用して、AdvancedSearchCompleteイベントを待機する必要があるかどうかを確認します。ところで、それは今までに同期していますか?
とにかく、Outlookを実行している場合は、この呼び出しに問題はありません。しかし、それが実行されない場合-呼び出しは次のように失敗します
EXCEPINFOには次のものが含まれます。
助言がありますか?これが私のテストケースです:
ms-word - C# で Word オートメーションを使用して、次の [保存] ボタンが参照するパスを変更したい
Word でドキュメントを作成して開くアプリケーションがあります。ユーザーはドキュメントを変更して再度保存することができますが、Word を介して、ドキュメントが読み込まれた場所に保存するようユーザーに促したくありません。ドキュメントを保存するパスを設定したいのです。 (もしあれば) 別のパスに。
名前を付けて保存ダイアログを表示するために自動化を使用していません-押されるのは単語の「保存」ボタンなので、ある種のグローバルなデフォルトの「名前を付けて保存」場所を設定したいと思います。
.net - 高度なオプション(トレイ選択、両面印刷、ステープル)を使用した印刷
印刷ドキュメントを管理するプロジェクトがあります。最初は、なぜ印刷オプションを1か所に設定できなかったのか疑問に思います。たとえば、最初のページと他のページのプリンタトレイの選択は、 MSWordの自動化を使用して行うことができます。
上記のコードでは、一部のプリンターにはトレイの標準値がないため、プリンタートレイは整数として指定されています(HPでこの問題が発生しました。ここで説明するトレイコードです)。したがって、最初にコードを使用して、プリンタにあるトレイを取得します。
そして、このコードは問題なく動作します。
ただし、ここでデュプレックスとステープルのオプションを指定する方法はありません。両面印刷は、ここで説明され、このフォーラムスレッドでもMicrosoftが推奨するように、ドライバ関数OpenPrinterおよびSetPrinterを使用して実行できます。 ステープルは完全に不明です。誰かがこれを実装する方法を知っている場合は、私に知らせてください。このMSDN記事のようにステープリング列挙型を使用すると、印刷するドキュメントのカスタムレンダリングが必要になるため、役に立ちません。
状況と部品の実装方法について説明しました。これは、 Windows Server 2008 R2、MS Office 2010 x32、プリンターHP LaserJet P2055、およびRicohNashuatecDSm635の環境で正常に機能します。ネイティブおよびユニバーサルPCL6/PCL5eドライバーでテスト済み:デュプレックスとトレイの選択は期待どおりに機能します。
ただし、アプリケーションをクライアントに展開した後、プリンター(HPLaserJet4250およびRicohAficioMP C7501)は、常にデフォルトのトレイから両面印刷なしで印刷を行います。まったく同じ結果でいくつかの異なるドライバーを試しました。
どちらの環境でも、プリンターはネットワークプリンターです。したがって、プリンタードライバーを使用してデュプレックス設定を適用するには、このサポートフォーラムスレッドでMicrosoftが推奨しているように、サーバーにローカルドライバーをインストールし、ローカルプリンターを作成する必要がありました。
使用する環境とプリンタは非常に似ていますが、一方は機能しますが、もう一方は機能しません。どんな助けでも大歓迎です。