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

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


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…


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 に標準で用意されているワークシート関数で表示される利用方法の説明やヘルプ…


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 が起動します。   この動作は製品の問題と判断しており、現在弊社内で対応方針について検討を行っています。 現時点では、[ファイル] – [新規作成] から、スタート画面を表示してください。   本現象について、更新があれば随時この記事で公開します。 今回の投稿は以上です。   本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。


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


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. 再現サンプル 今回の現象は、発生条件が込み入っていますので、まずは現象が再現するファイルとサンプル プログラムを用いて、具体的な動作を説明します。…


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

2017/12/12 Update 本現象を修正する Excel 2013 向け更新プログラムを公開しました。Excel 2016 向けの修正も追って公開予定です。 2018/1/26 Update Excel 2016 向けの修正を公開しました。合わせて、記事全体の構成を見直しました。   こんにちは、Office 開発 サポート チームの多田です。 今回は 2017 年 5 月 2 日にリリースされた Excel の更新プログラム KB3191877 を適用した Excel 2013 (MSI インストーラ形式) 、および同等の更新を含む Excel 2016 バージョン 1705  (クイック実行形式) 以降において、特定の条件下で Excel を起動する際に VBA のコンパイルエラーを示すダイアログが表示される動作について紹介します。     現象 以下の手順にて Excel ブックおよび VBA を作成して Excel 97-2003 形式…


2017 年 3 月のセキュリティ更新プログラム MS17-014 (KB3178690) を適用後、Excel 2010 でクラッシュやハングが発生する

Office 開発 サポート チームの中村です。 2017 年 3 月 15 日 (水) (日本時間) に公開された更新プログラム MS17-014 (KB3178690) を適用後、Excel 2010 で特定の操作を行うと Excel がクラッシュしたり、応答なしになる現象についてご案内します。   対象の更新プログラム タイトル : MS17-014: Description of the security update for Excel 2010: March 14, 2017 アドレス : https://support.microsoft.com/ja-jp/help/3178690   2017/3/21 Update 1. 現象 の発生シナリオ b. の詳細と再現手順の例を記載しました。 3. 状況 に現在の状況を記載しました。 4-4. 回避策 を追記しました。 5. 関連情報…


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 プロパティ (Excel) アドレス : https://msdn.microsoft.com/ja-jp/library/office/ff835278.aspx   CodeName…


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

こんにちは、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 でユーザー操作を行うアプリケーションでは、処理の整合性を確保するための実装が MTA と比較して容易なため、STA が採用されることが多いと思います。) STA モデルである Office では、他プロセスからの…