Microsoft ストア アプリ版 Office 2016 (Centennial) での開発 – その1 – (DLL の読み込み)

こんにちは、Office 開発サポート チームの中村です。久しぶりの投稿になります。 このタイトルの記事では、新しい提供方法である「Microsoft ストア版 Office 2016」における、これまでの Office との違いについて、Office 開発観点から記載していきたいと思います。今後もこのテーマでは何度か投稿することになると思いますが、今回はまず、DLL 読み込み動作の違いについて記載します。   1. Microsoft ストア版 Office 2016 とは? Office 開発観点の話の前に、そもそも、Microsoft ストア版 Office 2016 とはどういうものかを簡単に説明します。 Office 2016 には色々なライセンス契約方式がありますが、これは単に契約上のみの違いではなく、販売方法によって、Office アプリケーション自体も異なる仕組みで提供されています。現在、以下の 3 種類の提供形式があります。   1-1. クイック実行 (C2R) 形式 Office 365、市販パッケージ (FPP)、以前のプレインストール (PIPC) がこの提供形式です。また、MSDN サブスクリプション契約でダウンロードできる検証用の Office 2016 も (プロダクト キーの入力などの認証方式はボリュームライセンスに一見見えますが) クイック実行形式です。 インターネットなどからサイズの小さいインストーラをダウンロードして実行し、インストールの中で実行モジュールのダウンロード等を行います。最低限の準備ができると Office を使い始めることができ、バックグラウンドで残りのインスト―ルが行われることから、クイック実行と呼ばれます。 Office 2016 では、現在このクイック実行形式が主流となっており、製品の修正、新機能の追加などは、基本的にこのクイック実行形式に対して行われます。 クイック実行形式は、Microsoft Application…


Excel / PowerPoint / Visio 2016 バージョン 1801 以降で WebBrowser コントロールがユーザーフォーム外に表示される

こんにちは、Office 開発サポート チームの中村です。 今回の記事では、ユーザーフォーム上に WebBrowser コントロールを貼り付けて利用している場合に、Windows 10 バージョン 1703 以降の OS で Office 2016 をバージョン 1801 以降に更新すると、WebBrowser コントロールがユーザーフォームの外に表示される動作について記載します。 2018/2/5 Update 本現象が発生する要因となる機能 (後述の「ディスプレイで最適な解像度を使用」) の有効化を延期しました。このため、本記事の内容は今後の更新で発生する可能性がある現象としてご案内します。現時点で、本機能の有効化時期は未定です。   再現手順 1. 新規 Excel ブックを作成し、Visual Basic Editor でユーザーフォーム (UserForm1) を追加して、WebBrowser コントロールとボタン コントロールを貼り付けます。   2. ボタン コントロールのクリック イベント ハンドラに以下のようなコードを記述します。 Private Sub CommandButton1_Click() UserForm1.WebBrowser1.Navigate2 (“http://www.microsoft.com”) End Sub   3. F5 キーを押下して、ユーザーフォームを表示すると、以下のように WebBrowser コントロールがユーザーフォームのウィンドウ外に表示されます。…


Excel 2016 バージョン 1712 で Workbook_Open から表示したユーザーフォームを閉じるとクラッシュする

こんにちは、Office 開発サポート チームの中村です。 2017 年 12 月に先行リリース チャネルに公開済みの Office 2016 の更新バージョン 1712 を適用した環境の Excel 2016 で、ブック オープンと同時にユーザーフォームを表示している場合に、これを閉じると Excel がクラッシュする現象を確認しています。本記事では、現象が発生する状況と、修正、回避策についてご案内します。今後、修正状況など随時更新を予定しています。 2018/1/17 Update Insider スローへ修正を公開しました。 2018/1/23 Update Insider スローで問題が再発生する状況について追記しました。 2018/1/26 Update Insider スローに再度修正されたバージョンを公開しました。 2018/2/5 Update Insider ファーストに修正されたバージョンを公開しました。   1. 現象の詳細 Office 2016 バージョン 1712 (8827.2082 以降) の環境で、Workbook_Open イベント ハンドラなどのブック オープンと同時に実行される処理からユーザーフォームをモーダル表示するマクロが組み込まれているファイルを開くときに、ユーザーフォームは正常に表示されますが、ユーザーフォームを閉じると Excel がクラッシュします。   再現手順 1. 新規 Excel ファイルを作成します。 2. Visual Basic…


Office リボンをカスタマイズ – パート7 – (TIPS 3 : 特殊メニューのカスタマイズ)

こんにちは、Office 開発サポートの中村です。 これまで 6 回にわたってリボン カスタマイズについて記事を公開してきましたが、今回でいったん最後の記事の予定です。最後に、特殊なメニューである BackStage ビュー / 右クリックで表示されるコンテキスト メニュー / クイック アクセス ツール バーのカスタマイズ方法をご紹介します。   目次 1. BackStage ビューのカスタマイズ 2. 右クリック メニューのカスタマイズ 3. クイック アクセス ツールバーのカスタマイズ     1. BackStage ビューのカスタマイズ BackStage ビューは、Office 2010 から導入された [ファイル] タブ内のメニューを指します。Excel 2016 の場合、以下のような画面です。 Office 2010 の名前空間 <http://schemas.microsoft.com/office/2009/07/customui> では、この BackStage ビューをカスタマイズする方法も用意されています。言い換えますと、XML でのカスタマイズのみとなりますので、VSTO でビジュアルなデザイナーから BackStage ビューをカスタマイズすることはできません。 また、通常のリボンは、VBA の Comanndbars…


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

こんにちは、Office 開発サポート チームの中村です。   Excel には、セルに設定する式として、SUM() のように計算に関するものや、IF() のように論理条件を制御するものなど、様々なワークシート関数が用意されています。既存のワークシート関数で要望を満たすものがない場合、マクロで実装した独自処理を、ユーザー定義関数として登録することができます。 このブログを訪れる方の多くは、ユーザー定義関数を登録すること自体はご存知の方が多いかと思いますが、このようなユーザー定義関数を作成するときにその関数に機能説明やヘルプを追加する方法について、公開情報からは分かりづらい点もありますので、本記事で紹介したいと思います。   1. ユーザー定義関数の作成 関数説明の登録やヘルプのリンクの前に、まずはユーザー定義関数を登録する方法を確認します。 ユーザー定義関数の作成は、VBA の標準モジュールに Function 関数を記述するだけですぐに利用できます。以下の例は、TestUDF という名前の関数を作成し、引数 1 に数値、引数 2 に文字列を渡すと、これらを組み合わせて文章を作成して返却する関数です。(Public でなくともユーザー定義関数として利用できます。アドインなどで複数ブックからの利用を想定している場合は Public を付与します。) Public Function TestUDF(num As Integer, str As String) As String TestUDF = “No.” & num & “は” & str & “です” End Function   このような VBA コードを追加した状態でシート上でセルに直接関数を入力すると、すぐに利用できます。   ただこのままの状態では、Excel に標準で用意されているワークシート関数で表示される利用方法の説明やヘルプ…


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.8201.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 セルに貼り付けられます。   これに伴って、画面操作では、行などの挿入を行うときに…