Excel の CodeName プロパティが取得できない動作

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/d8862af1-4790-44a8-a6b8-89fc9681f7af/excel-codename-   こんにちは、Office 開発 サポート チームの中村です。 今回は、Excel の CodeName プロパティの動作について、開発時に気付きづらい動作上の注意点を記載します。この状況に直面した開発者の皆様へのヒントになれば幸いです。   Excel をオートメーションするとき、ブックやシートを特定するために、CodeName プロパティを使用できます。CodeName プロパティは、Visual Basic Editor (VBE) のプロパティ ウィンドウの [(オブジェクト名)] で確認できる値です。 Excel の CodeName プロパティは、以下の 3 つのオブジェクトに用意されています。   タイトル : Workbook.CodeName プロパティ (Excel) アドレス : https://msdn.microsoft.com/ja-jp/library/office/ff195162.aspx   タイトル : Worksheet.CodeName プロパティ (Excel) アドレス : https://msdn.microsoft.com/ja-jp/library/office/ff837552.aspx   タイトル : Chart.CodeName…


[オートメーション / 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…


Microsoft Graph – Excel REST API (C#) を使い Range を操作するサンプル コード

※ この記事は以下の Office サポート フォーラムに移行しました。 https://social.msdn.microsoft.com/Forums/ja-JP/f1bb2a2a-b3ce-445e-8744-ccbb615c2235/webapimicrosoft-graph-excel-rest-api-c-range-   こんにちは、Office Developer サポートの森 健吾 (kenmori) です。 今回の投稿では、Microsoft Graph – Excel REST API を使用して、指定されたアドレスの Range オブジェクトを操作するプログラムを、実際に C# で開発するエクスペリエンスをご紹介します。 ウォークスルーのような形式にしておりますので、慣れていない方も今回の投稿を一通り実施することで、プログラム開発を経験し理解できると思います。前回の OneDrive API のウォークスルー同様、本投稿では、現実的な実装シナリオを重視するよりも、Excel REST API を理解するためになるべくシンプルなコードにすることを心掛けています。例外処理なども含めていませんので、実際にコーディングする際には、あくまでこのコードを参考する形でご検討ください。 Excel REST API は、OneDrive API が前提となります。OneDrive API エンドポイント配下で取得したファイルに対してのみ、Excel REST API は使用できます。Office 365 という前提はありますが、一度慣れてしまえばオートメーションの要件において、OpenXML などのプログラムを実装するよりも開発生産性が高いと思います。 事前準備 以前の投稿をもとに、Azure AD にアプリケーションの登録を完了してください。少なくとも以下の 2 つのデリゲートされたアクセス許可が必要です。 ・Have full access to all files…


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 以降のバージョンで新しいブックを開いたときに既存プロセスが利用されるようになると、ユーザーは、現在のブックが開かれているプロセスをこれまでより意識することなく、これらの機能を利用することができます。 以下が、同一プロセス内のブック間で利用できる主な機能です。  外部参照 (リンク) セルに “=[ブック名]シート!セル” のように設定して別ブックのセルに設定された値を参照する機能です。新規作成や、参照先セルの変更に伴って外部参照式が入力されたセルの値を更新するためには、同じプロセスでブックを開く必要があります。 関連情報) タイトル…