[オートメーション / VSTO] .NET での Office ソリューション開発時の開発環境のバージョン選定 (最新版)

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/b6ce3e29-3859-4344-9535-c8d89e4cf778/-vsto-net-office-   こんにちは、Office 開発 サポート チームの中村です。 今回は、C# や VB.NET を使って .NET Framework 上で動作する Office をオートメーションするプログラムや、VSTO でOffice ソリューション (アドインや、プログラムが組み込まれた Office ファイル) を作成するときに必要な環境構成について記載します。 過去の投稿で、当時の製品でのバージョン選定について記載していましたが、古い情報になってしまいましたので、本記事では、現在サポートされる製品バージョンについての最新情報を記載したいと思います。動作の仕組みの説明などは、過去の投稿で詳しく説明していますのでぜひ合わせてご参照ください。 2017/7/14 Update Visual Studio 2017 と .NET Framework 4.7 の情報を追記しました。 2018/1/16 Update 「表2. VSTO 開発環境の組み合わせ」の実行環境で利用される VSTO Runtime と Office のバージョンの組み合わせを表内に追記しました。   目次 1. 導入 – 開発環境に必要なもの 2. Office オートメーションの場合…


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

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/52e656d4-855f-4772-a255-e4dda9f52e37/office-?forum=officesupportteamja   こんにちは、Office 開発 サポート チームの中村です。 今回は、Office をオートメーションするアプリケーションをマルチスレッドで作成する際の注意点について記載します。 Office は STA (Single-Threaded Apartment) モデルで動作しているため、マルチスレッドからの呼び出し、特に Office に重い処理を実行させているときや、ループ処理などでマルチスレッドから大量の呼び出しを行うと、エラーが発生することがあります。 この動作については、以下の弊社公開資料で解説していますが、開発者の皆様に知って頂く機会を増やすとともに、図等を用いてより親しみやすい内容でご案内するため、今回、本記事でも取り上げたいと思います。 タイトル : Office でのスレッドのサポート アドレス : https://msdn.microsoft.com/ja-jp/library/8sesy69e.aspx   目次 1. STA とは? 2. マルチスレッドからの呼び出しで想定されるエラー 3. 対処方法   1. STA とは? プロセスのスレッド モデルには、大きく分けて STA と MTA (Multi-Threaded Apartment) モデルがありますが、Office は STA を採用しています。(主に GUI でユーザー操作を行うアプリケーションでは、処理の整合性を確保するための実装が…


Windows 10 Version 1607 上で Workbook.Close 実行後に Excel がエラーとなってしまうことがある問題について

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/7512459c-fce8-40a9-b167-8c483247f037/windows-10-version-1607-workbookclose-excel-     こんにちは、Office 開発 サポート チームの 遠藤です。 今回は、Windows 10 への対応を行われているお客様からいくつかいただくもので、Excel がクラッシュしてしまう、という問題について報告したいと思います。 2017/4/13 update 本 Blog で紹介した問題については、2017 年 4 月から提供を開始しました Windows 10 Creators Update にて修正されました。   この問題は以下の条件下で発生します。 (条件の 1 から 4 は必須条件となります。 5 については、結果的に何かしらのオブジェクトを破棄するような処理が影響する可能性があり、5  は一例となります。) OS が Windows 10 Version 1607 (Anniversary Update) であること Excel をオートメーションで操作していること Excel 内部から結果的にプリンタ情報を取得する処理を行うこと “Windows で通常使うプリンターを管理する” が既定値である “オン” になっていること Workbook…


Office プロセスを自プログラム専用にすることはできません

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/f3f16afa-0126-4054-a58e-a2e77986cd80/office-?forum=officesupportteamja こんにちは、Office 開発 サポート チームです。 前回の投稿で Excel のプロセスを統合することについて記載しましたが、今回はこれに関連し、Office オートメーションを行うプログラムを開発するときにプログラムから操作する Office プロセスを自分のプログラム専用にできるか、という話を記載します。   Office オートメーションを行うプログラム開発を行う際、プログラムの処理が行いやすいよう、Office アプリケーションのプロパティを変更したり、画面を非表示にすることがあります。このとき、プログラムから行うプロパティ設定や画面の状態を、ユーザーが開いている他の Office ファイルには反映させたくないといった理由から、「ユーザーが起動する Office とプログラムが起動する Office でプロセスを分けたい」というご相談を頂くことがあります。   結論から申し上げますと、このような動作を完全に実現することはできません。   過去投稿で、Office では起動方法によって、既に起動されたプロセスがある場合には、これを利用して新しいファイルを開く動作となることをご紹介しています。 過去の投稿) タイトル : Excel 2013 からのウィンドウ管理方法変更について – シングル ドキュメント インターフェイス (SDI) アドレス : https://blogs.msdn.microsoft.com/office_client_development_support_blog/2016/12/19/excel2013-changes-to-sdi/ タイトル : Office のプロセス インスタンス制御について アドレス : https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/02/14/office-4/   過去投稿でご案内している…


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

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/bc946302-91ff-4fdd-b798-b7b7a06c5391/excel-?forum=officesupportteamja   こんにちは、Office 開発 サポート チームです。 今回は、前回の投稿の 3-1. ブックが開かれるプロセス で説明した動作に関連して、複数のブックを 1 つのプロセスで開くことのメリットについて記載します。 前回の投稿の通り、Excel 2013 以降のバージョンでは Excel 2010 までは新規プロセスを起動していたスタートメニューなどからの起動シナリオで、既存プロセスが使用されるように変更されました。 これは、Excel アプリケーションが MDI から SDI に変更された影響でもありますが、Excel 動作上のメリットもあります。以下に、主なメリットについて、いくつかご案内したいと思います。   目次 1. Excel 機能上のメリット 2. リソース上のメリット 3. プログラム上のメリット   1. Excel 機能上のメリット Excel には、ブックをまたがって実行することができるいくつかの機能がありますが、これらの機能が動作するためには、ブックを開いているプロセスが同じであることが条件となります。Excel 2013 以降のバージョンで新しいブックを開いたときに既存プロセスが利用されるようになると、ユーザーは、現在のブックが開かれているプロセスをこれまでより意識することなく、これらの機能を利用することができます。 以下が、同一プロセス内のブック間で利用できる主な機能です。  外部参照 (リンク) セルに “=[ブック名]シート!セル” のように設定して別ブックのセルに設定された値を参照する機能です。新規作成や、参照先セルの変更に伴って外部参照式が入力されたセルの値を更新するためには、同じプロセスでブックを開く必要があります。 関連情報) タイトル…


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

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/a74ebdc3-9c37-46a1-8521-3cac24965e18/excel-2013?forum=officesupportteamja こんにちは、Office 開発 サポート チームです。 先日、本ブログの更新再開をお知らせさせて頂きましたが、今回の投稿では Office クライアント開発に関する投稿の第一弾として、Excel 2013 から変更された Excel のウィンドウ管理方法について記載します。 今回の内容は、Office クライアント製品を利用した開発を行う場合だけでなく、画面操作で Excel を操作する上でも影響がありますが、特に開発観点でチェックして頂きたいポイントを解説していきます。   2018/4/4 Update 3-1. に DisableMergeInstance に関する情報を追記しました。   目次 1. MDI と SDI とは? 2. Excel のウィンドウ管理の変更 3. Excel を利用するプログラムへの影響 3-1. ブックが開かれるプロセス 3-2. リボン カスタマイズ 3-3. 複数ウィンドウをまたがる操作 (サポート技術情報のご案内)   1. MDIと SDI とは? Windows…