Office リボンをカスタマイズ – パート6 – (TIPS 2 : 動的なカスタマイズ)

こんにちは、Office 開発サポート チームの中村です。 今回の記事では、前回の投稿に引き続き、リボン カスタマイズ方法の例をご紹介します。   以前の投稿で紹介した方法で、リボンのカスタマイズがファイル単位でできることはお伝えしましたが、以下のような状況の開発者の方もいるのではないでしょうか。 ・アドインとして提供する 1 つのプログラムから、ファイルによってリボンの内容を変えたい (ファイルにカスタマイズを組み込みたくない) ・Office 97-2003 形式 (.xls 等) のファイルにリボン カスタマイズを行いたい ・ブック内での操作に応じて動的にリボンの状態を変えたい   これらの要望は、Office 2007 形式のアドイン (.xlam 等)、または VSTO カスタマイズで実現できますので、以下に具体例を用いて紹介します。Excel のカスタマイズを行われることが多いので、(これまでの記事を含め) 以下はすべて Excel を例に説明していますが、他の Office アプリケーションでも利用できます。   目次 1. .xls 形式のファイルのリボン カスタマイズを行う (アドインからファイルごとにリボンをカスタマイズする) 2. 任意のタイミングでリボンの状態を変更する   1. .xls 形式のファイルのリボン カスタマイズを行う (アドインからファイルごとにリボンをカスタマイズする) .xlsx / .xlsm 形式のファイルであれば、リボン カスタマイズの XML をファイル内に組み込むことができました。一方、.xls…


Office リボンをカスタマイズ – パート5 – (TIPS 1 : 既存メニューのカスタマイズ)

こんにちは、Office 開発サポート チームの中村です。   本テーマについて、前回の投稿から時間が空いてしまい申し訳ありません。 ここまでの記事では、カスタムのリボン タブを作成するというカスタマイズ内容を例に、カスタマイズ手法についてご紹介してきました。今回の記事からは、この他によく行われるカスタマイズの実装方法をいくつか紹介しつつ、XML などの書き方のイメージを掴んでいただればと思います。   今回の投稿で紹介する方法は、1. を除いて VSTO のビジュアルなデザイナーではカスタマイズできない内容となりますので、XML を利用して実装します。VSTO のビジュアルなデザイナーでカスタマイズしている方で以下の方法を利用したい場合は、以前の投稿の例でも行っていたように、ビジュアルなデザイナーで作成したリボンを XML へエクスポートできます。   目次 はじめに : 開発時に便利な機能 1. 既存のタブをすべて表示しない方法 2. 既存のリボン メニューを無効化する方法   はじめに : 開発時に便利な機能 Office で以下のオプションを有効にすると、リボン カスタマイズ用の XML の記述エラーをハンドリングすることができます。 無視して問題ないエラーも通知されるため、運用上はお勧めしませんが、開発時にはこのオプションを有効にしておくと実装上の問題点を確認しやすくなります。 <該当の設定項目> [ファイル] タブ – [オプション] – [詳細設定] – [全般] セクション – [アドイン ユーザー インターフェイスに関するエラーを表示する]   1. 既存のタブをすべて表示しない方法 アプリケーション経由で…


Excel 2016 バージョン 1704 以降で XLL 形式のアドインを組み込んだ場合の問題について

こんにちは、Office 開発サポートチームの遠藤です。 今回の記事では、Office 2016 クイック実行形式 (C2R) 向けのバージョン 1704(16.0.8067.xxxx) 以降の更新よって、 XLL 形式のアドインを組み込んだ際の既知の問題について記載します。 2017/10/4 Update 本問題は、月次チャネル バージョン 1708 (ビルド 8431.2094 クイック実行) で修正しました。 Excel を通常通り起動すると、スタート画面(テンプレート等を選択する画面) が表示されます。 なお、スタート画面自体は、[ファイル] – [オプション] で、 [基本設定] の中の “このアプリケーションの起動時にスタート画面を表示する” という オプションをオフにすることで表示しないように設定することができます。 ただ、XLL 形式のアドインを組み込んでいる場合に、設定に関係なくスタート画面が表示されず、かつ、新規のブックも作成されない状態で Excel 2016 が起動します。   この動作は製品の問題と判断しており、現在弊社内で対応方針について検討を行っています。 現時点では、[ファイル] – [新規作成] から、スタート画面を表示してください。   本現象について、更新があれば随時この記事で公開します。 今回の投稿は以上です。   本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。


Office 2016 バージョン 1708 以降で日本語の VBA モジュール名を含むファイルを開くとエラー

こんにちは、Office 開発サポート チームの中村です。 今回の記事では、Office 2016 クイック実行形式 (C2R) 向けのバージョン 1708 (16.0.8431.2079) の更新によって、日本語のモジュール名やフォーム名を持つ Office ファイルを開くときにエラーが発生する動作について記載します。 2017/9/19 Update Semi-Annual (Targeted) Channel と Monthly Channel 向けにもバージョン 1708 が公開された旨を追記しました。 2017/9/20 Update Excel 以外のアプリケーションでも発生する旨を追記しました。 2017/9/28 Update 現象発生条件の補足と、暫定対応でご案内している Office を以前のバージョンに戻す手順を、今回の問題向けにより簡略化したものを追記しました。また、本問題の修正に向けた作業に着手していますので、状況を更新しました。 2017/9/29 Update Access のエラーメッセージの情報を追記しました。また、情報が多くなったため、記事構成を全体的に変更しました。 2017/10/4 Update Monthly Channel に修正されたバージョンを公開しました。 2017/10/5 Update Office 画面から更新可能になりました。Insider スローにも修正されたバージョンを公開しました。現象が発生するバージョンの詳細を追記しました。 2017/10/10 Update Semi-Annual (Targeted) Channel に修正されたバージョンを公開しました。 2017/10/30 Update…


バージョン 1705 以降の Excel 2016 でコピー範囲が保持されるようになった動作のプログラムへの影響

こんにちは、Office 開発サポート チームの中村です。   今回の投稿では、Excel のコピー動作の変更に関して記載します。 これまで、Excel ではセル範囲をコピーした後、他のセルに値を入力したり、セルの挿入や削除などを行うと、コピー範囲が解除されて貼り付けられなくなっていました。 この動作について、クイック実行版の Excel 2016 バージョン 1705 (16.0.8067.xxxx) で、Excel のセル範囲をコピーした後、他の操作を行っても、コピー範囲が解除されないように変更されました。このバージョンは、Current Channel 向けに 2017 年 5 月に提供されたものとなり、他のチャネルへは順次提供されます。この新しい動作については、以下の公開情報で確認できます。   タイトル : Office 365 の新機能 アドレス : https://support.office.com/ja-JP/article/95c8d81d-08ba-42c1-914f-bca4603e1426 該当箇所 : “2017 年 5 月の更新プログラム” 内の “コピーを保持する”   例) 以下のように A1 セルをコピーします。   B1 セルに文字を入力します。   Enter キーを押下して、入力を完了すると、A1 セルのコピーが維持されたままとなっており、そのまま C1 セルに貼り付けられます。   これに伴って、画面操作では、行などの挿入を行うときに…


2017 年 7 月のセキュリティ更新適用後、VBA から一部のオブジェクトを作成できません

こんにちは、Office 開発サポート チームの中村です。   今回の記事では、2017 年 7 月 12 日 (日本時間) に公開されたセキュリティ更新によって、VBA から一部のオブジェクトを利用できなくなりました。本記事では、この動作ついて記載します。 2017/7/14 Update クイック実行形式向けの更新が公開されましたので、情報を追加しました。 2017/8/25 Update 利用できなくなったオブジェクトの例を追記しました。   2017 年 7 月の Office セキュリティ更新で、以下の公開情報で案内している修正が行われました。 タイトル : CVE-2017-8570 | Microsoft Office Remote Code Execution Vulnerability アドレス : https://portal.msrc.microsoft.com/ja-jp/security-guidance/advisory/CVE-2017-8570   この更新によって、VBA から CreateObject などで一部のオブジェクトを作成することができなくなりました。 利用できなくなったものの例 : Scriptlet.TypeLib (CreateObject(“Scriptlet.TypeLib”).GUID のように、GUID を作成するためなどに利用されます。)   この更新で作成できなくなったオブジェクトはごく一部で、Excel.Application 等の各種 Office アプリケーション…


Excel の SpecialCells メソッドで特定の状況において期待しない該当セルが取得される

こんにちは、Office 開発サポート チームの中村です。   Excel には、SpecialCells メソッドという、引数に指定した条件に合致するセルを返すメソッドが用意されています。   タイトル : Range.SpecialCells メソッド (Excel) アドレス : https://msdn.microsoft.com/ja-jp/library/office/ff196157.aspx   現在の Excel の動作では、特定の処理の流れでこのメソッドを使用するとき、期待した範囲が取得できないことがあります。 今回の記事では、この動作について詳細を記載します。この動作が生じる状況に該当する場合は、後述の回避策で対応することをご検討ください。   2017/7/13 Update この動作は、Excel 製品の制限事項であることを追記しました。   目次 1. 再現サンプル 1-1. 再現ファイル構成 1-2. サンプル プログラム 2. 再現手順と現象 3. 発生条件と原因 4. 回避策 4-1. DisplayAlerts プロパティに False を設定する 4-2. 事前に SpecialCells メソッドを実行する   1. 再現サンプル 今回の現象は、発生条件が込み入っていますので、まずは現象が再現するファイルとサンプル プログラムを用いて、具体的な動作を説明します。…


Office リボンをカスタマイズ – パート4 – (VSTO XML でカスタマイズ)

こんにちは、Office 開発 サポート チームの中村です。 Office リボンのカスタマイズ方法について数回にわたってご紹介していますが、パート 1 でご紹介した 3 つの方法のうち、最後の方法 「b. VSTO から XML を用いてカスタマイズを行う」について詳しく紹介したいと思います。   以前の投稿は、以下をご参照ください。 Office リボンをカスタマイズ – パート1 – (カスタマイズ手法と仕組み) Office リボンをカスタマイズ – パート2 – (ファイルにカスタム XML を追加) Office リボンをカスタマイズ – パート3 – (VSTO ビジュアルなデザイナーでカスタマイズ)   VSTO XML でリボンをカスタマイズする この方法は、Visual Studio を使って VSTO ソリューションを開発し、このソリューションの中に、リボンをカスタマイズする XML とカスタマイズで実行したい処理 (コールバック関数) を実装します。ビジュアルなデザイナーと同じように、カスタマイズ内容は VSTO ランタイムによって VSTO ソリューションのロード時にOffice…


KB 3191877 の適用後に VBA のコンパイルエラーが発生する

対象製品 ・Excel 2013 (15.0.4927.1000) ・Excel 2016 Insider Fast version 1705 (Build 8117.1000)   こんにちは、Office 開発 サポート チームの多田です。 今回は 2017 年 5 月 2 日にリリースされた Excel の更新プログラムを適用した環境において、特定の条件下で Excel を起動する際に VBA のコンパイルエラーを示すダイアログが表示される件について紹介します。     現象 今回の現象は以下の手順にて Excel および VBA を作成した際に発生します。   現象再現手順 (Excel 2013 の場合) ^^^^^^^^^^^^^^^^^^^^^^^^^^ Excel 2013 SP1 に以下の KB 3191877 を適用します。   タイトル : May…

0

Office 2016 クイック実行形式 16.0.7341.2032 以降で Microsoft.Vbe.Interop.Forms を参照するプログラムでエラー

こんにちは、Office 開発サポート チームの中村です。 今回の記事では、.NET Framework 上で動作するアプリケーションからの Office オートメーションや VSTO ソリューションで、Microsoft.Vbe.Interop.Forms が参照できないことによってエラーが発生する動作について記載します。 ※ 弊社内で状況を確認中のため、この記事は後日更新される可能性があります。   1. サマリ Office 2016 クイック実行形式の 16.0.7341.2032 以降のバージョンで、Microsoft.Vbe.Interop.Forms がグローバル アセンブリ キャッシュ (GAC) に登録されなくなりました。この影響で、このバージョン以降の Office 2016 の利用時に、GAC に Microsoft.Vbe.Interop.Forms が存在しない状況が生じる場合があります。 この動作のため、Microsoft.Vbe.Interop.Forms を利用する .NET Framework 上で動作するアプリケーションで PIA 埋め込みを行っていない場合に、この環境では GAC から Microsoft.Vbe.Interop.Forms アセンブリを読み込むことができず、エラーが生じます。   2. 現象詳細 Office PIA (Office プライマリ相互運用アセンブリ) には、ActiveX コントロールへのアクセスに利用する Microsoft.Vbe.Interop.Forms アセンブリ (Microsoft Forms…