Office オートメーションで割り当てたオブジェクトを解放する - Part2

Last Update:
(※ 2012 年 2 月 28 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。)   こんにちは、Office 開発系サポート 森 健吾 (kenmori) です。 今回の投稿では、Office オートメーションの実装コードで割り当てたオブジェクトを解放する – Part1 の続編を記載いたします。続編では、前回の投稿でベスト プラクティスとして紹介した解放処理に対して解説を実施した後、正しくオブジェクト解放を実施しない場合に生じる影響についてご紹介します。 最初に、オブジェクト解放漏れがあると、主に以下のような事象があるということは先に述べておきます。 ・意図とは異なる COM オブジェクトに接続され、想定とは異なる結果を返し、アプリケーションの動作に予期せぬ影響を与えます。・通常のメソッド実行にも関わらず COMEx...

Read More

Office オートメーションで割り当てたオブジェクトを解放する – Part1

Last Update:
(※ 2012 年 2 月 9 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発系サポート 森 健吾 (kenmori) です。 今回の投稿では、Office オートメーションの実装コードで割り当てたオブジェクトを解放するというテーマにて記載いたします。.NET Framework 上で動作するカスタム アプリケーションにおいて、Office オートメーションで処理を実装する場合には割り当てたオブジェクトを確実に解放することをお勧めします。 2016/12/2 Updateサンプル コードを中間オブジェクトも解放するよう、より適切な形に変更しました。 2017/3/28 Updateアプリケーション終了前に一部のオブジェクトを解放するよう、サンプル コード...

Read More

Office サーバー サイド オートメーションの代替案について

Last Update:
(※ 2014年 5 月 7 日に Japan SharePoint Support Team Blog に公開した情報のアーカイブです。) こんにちは、SharePoint サポートの 森 健吾 (kenmori) です。 今回の投稿では、Office 開発サポートを担当していた時期に記載した下記投稿 Office サーバーサイド オートメーションの危険性の続編として、その代替案を記載いたします。 タイトル : Office サーバー サイド オートメーションの危険性についてアドレス: https://officesupportjp.github.io/blog/Office サーバー サイド オートメーションの危険性について/ 上記投稿のおさらいとなりますが、例えば以下のような機能を Web サーバー上で Office API を使用したオートメーションで実装することはサポートされ...

Read More

Office サーバー サイド オートメーションの危険性について

Last Update:
(※ 2014 年 4 月 11 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発系サポート 森 健吾 (kenmori) です。 今回の投稿では、Office サーバー サイド オートメーション (非対話型オートメーション) に対する正しい理解を持っていただくことを目的として記載いたします。 はじめに 結論からお伝えしますと Office のサーバー サイド オートメーション (非対話型オートメーション) を、マイクロソフトはサポートしておりません。 前提として、サーバーにインストールされた Office クライアント アプリケーションを使用したオートメーションを実施して、クライアント側の処理をサーバー側で集中して代行するなどの機能をライセンスを持たないエンドユーザーに提供した場合は、Micr...

Read More

Officeソリューション開発時の開発環境のバージョン選定について

Last Update:
(※ 2012 年 5 月 23 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは Office 開発系サポートの森 健吾 (kenmori) です。 今回の投稿では .NET Framework 上で動作する Office ソリューションを開発する際に、検討すべき開発環境のバージョン選定のために必要となる情報について記載いたします。 以下の内容でご説明させていただきます。 2017/2 Update 新しい Visual Studio と Office バージョンについての記事を以下に投稿しました。 タイトル : [オートメーション / VSTO] .NET での Office ソリューション開発時の開発環境のバージョン選定 (最新版)アドレス : https://officesupportj...

Read More

Excel ユーザー定義関数に機能説明や独自ヘルプをリンクする方法

Last Update:
(※ 2017 年 11 月 21 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発サポート チームの中村です。 Excel には、セルに設定する式として、SUM() のように計算に関するものや、IF() のように論理条件を制御するものなど、様々なワークシート関数が用意されています。既存のワークシート関数で要望を満たすものがない場合、マクロで実装した独自処理を、ユーザー定義関数として登録することができます。 このブログを訪れる方の多くは、ユーザー定義関数を登録すること自体はご存知の方が多いかと思いますが、このようなユーザー定義関数を作成するときにその関数に機能説明やヘルプを追加する方法について、公開情報からは分かりづらい点もありますので、本記事で紹介したいと思います。 1. ユーザー定義関数の作...

Read More

Office をマルチスレッドでオートメーションすることの危険性

Last Update:
(※ 2017 年 1 月 30 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発 サポート チームの中村です。 今回は、Office をオートメーションするアプリケーションをマルチスレッドで作成する際の注意点について記載します。 Office は STA (Single-Threaded Apartment) モデルで動作しているため、マルチスレッドからの呼び出し、特に Office に重い処理を実行させているときや、ループ処理などでマルチスレッドから大量の呼び出しを行うと、エラーが発生することがあります。 この動作については、以下の弊社公開資料で解説していますが、開発者の皆様に知って頂く機会を増やすとともに、図等を用いてより親しみやすい内容でご案内するため、今回、本記事でも取り上げたいと思い...

Read More

Excel 2013 からのウィンドウ管理方法変更について – シングル ドキュメント インターフェイス (SDI)

Last Update:
(※ 2016 年 12 月 19 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発 サポート チームの中村です。 先日、本ブログの更新再開をお知らせさせて頂きましたが、今回の投稿では Office クライアント開発に関する投稿の第一弾として、Excel 2013 から変更された Excel のウィンドウ管理方法について記載します。 今回の内容は、Office クライアント製品を利用した開発を行う場合だけでなく、画面操作で Excel を操作する上でも影響がありますが、特に開発観点でチェックして頂きたいポイントを解説していきます。 2018/4/4 Update3-1. に DisableMergeInstance に関する情報を追記しました。 2020/7...

Read More

Excel でブックを開くプロセスを統合するメリット

Last Update:
(※ 2017 年 1 月 13 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発 サポート チームです。 今回は、前回の投稿の 3-1. ブックが開かれるプロセス で説明した動作に関連して、複数のブックを 1 つのプロセスで開くことのメリットについて記載します。 前回の投稿の通り、Excel 2013 以降のバージョンでは Excel 2010 までは新規プロセスを起動していたスタートメニューなどからの起動シナリオで、既存プロセスが使用されるように変更されました。 これは、Excel アプリケーションが MDI から SDI に変更された影響でもありますが、Excel 動作上のメリットもあります。以下に、主なメリットについて、いくつかご案内したいと思います。 目次 1. Excel 機能上のメ...

Read More

Office のプロセス インスタンス制御について

Last Update:
(※ 2012 年 2 月 14 日に Japan Office Developer Support Blog に公開した情報のアーカイブです。) こんにちは、Office 開発系サポート 森 健吾 (kenmori) です。 今回の投稿では、Office のプロセス インスタンス制御というテーマにて記載いたします。 Office アプリケーションは MDI (Multi Document Interface) アプリケーションとして開発されており、1 つのプロセスで複数のドキュメントを扱えるように実装されています。 様々な場合において、既存のプロセス インスタンスでドキュメントを開くか、新しいプロセスを起動してドキュメントを開くかを制御しています。 この動作は、Office の自動化プログラムを実装するにあたり、色々と影響があるため、事前に把握しておいた方が良い内容と思い、ご紹介させてい...

Read More