• 検索結果がありません。

エクセル詳細 アドイン

N/A
N/A
Protected

Academic year: 2021

シェア "エクセル詳細 アドイン"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)

■ アドイン ■ ■ Excel アドインの作成 Excel アドインを作成するには、ブックを作成し、コード、ユーザー設定ツールバー、及び、メニュー項目を追 加して、Excel アドインファイルとして保存する。 1.新しいブックを作成してコードを追加し、ユーザー設定ツールバー、又は、メニューバーを作成する。 2.[ファイル] メニューの [プロパティ] をクリックする。開いて居るドキュメントのプロパティダイアログボ ックスで [ファイルの概要] タブをクリックし、[アドイン] ダイアログボックスに追加するアドインの名前 を [タイトル] ボックスで指定する。

3.Visual Basic Editor で、[デバッグ] メニューの [<プロジェクト名> のコンパイル] をクリックして、アド インプロジェクトをコンパイルする。

4.必要に応じて、「Access、Excel、PowerPoint、又は、Word アドインの VBA プロジェクトにセキュリティ を設定する」で説明されて居る方法で、プロジェクトへのアクセスを制限する。

5.アドインブックに.xla 拡張子を付けて Microsoft Excel アドインとして保存する。既定では、Excel アドイン はC:¥Windows¥Application Data¥Microsoft¥AddIns サブフォルダに、又は、ユーザープロファイルが使 用されて居る場合はC:¥Windows¥Profiles¥<ユーザー名>¥Application Data¥Microsoft¥AddIns サブフ ォルダに保存される。此のフォルダは、[アドイン] ダイアログボックスで新しいアドインを追加する際に Excel が検索する場所で有る。但し、Excel の起動時に自動的にアドインをロードする場合は、目的のアド インをXLStart フォルダに保存する。此の操作は「Excel アドインのロード」で説明して居る。 重要:Excel アドインを作成する際は、コードが実行されて居る状況に注意して欲しい。アドインブックへの参 照を取得する場合は、ThisWorkbook プロパティを使用するか、目的のブックを名前で参照する。現在 Excel で 開いて居るブックを参照するには、ActiveWorkbook プロパティを使用するか、其のブックを名前で参照する。 アドインを保存すれば、Excel で再度開いてプロジェクトに変更を加える事が出来る。保存されたアドインには 関連ブックは表示されないが、Visual Basic Editor を使用して其のプロジェクトを操作出来る。

Excel ドインとしてアドインブックを保存すると、対応する Workbook オブジェクトの IsAddIn プロパティが True に設定される。ThisWorkbook オブジェクトに対する此のプロパティは、Visual Basic Editor のプロパテ ィウィンドウで設定出来る。False に設定すると、ブックが再び表示される。

ロードされて居るExcel アドインはデバッグ可能で有る。アドインをロードすると、Visual Basic Editor のプロ ジェクトエクスプローラに其のプロジェクトが表示される。プロジェクトにセキュリティが設定されて居る場合、 コードを表示するには適切なパスワードを入力する必要が有る。

M

(2)

■ Excel アドインのロード

下記の孰れかの方法でExcel アドインをロードする事が出来る。

・[ツール] メニューの [アドイン] ダイアログボックスで、アドイン名の横のチェックボックスをオンにする。 ・C:¥Windows¥Application Data¥Microsoft¥Excel¥XLStart サブフォルダにアドインを保存すると、Excel を 起 動 し た 時 に 自 動 的 に ロ ー ド さ れ る 。 ユ ー ザ ー プ ロ フ ァ イ ル が 使 用 さ れ て 居 る 場 合 は C:¥Windows¥Profiles¥<ユーザー名>¥Application Data¥Microsoft¥Excel¥XLStart サブフォルダに保存す る。[オプション] ダイアログボックス([ツール] メニュー)の [全般] タブで XLStart サブフォルダの場所を 変更出来る。

・AddIns コレクションの Add メソッドを使用して目的のアドインを利用可能なアドインのリストに追加し、対 応するAddIn オブジェクトの Installed プロパティを True に設定する事に依り、プログラムに依って此のア ドインがロードされる。

例えば、下記のプロシージャは、最初にAddIns コレクションにアドインが有るか何うかを確認し、アドインが 無い場合は追加する事に依ってアドインをロードする。次に、アドインのInstalled プロパティを True に設定す る。此のプロシージャを呼び出すには、追加するアドインのパス、及び、ファイル名を渡す。

Function Load_XL_AddIn(strFilePath As String) As Boolean ' アドインがコレクションに有るか何うかを確認し、ロードする。

' 此のプロシージャを呼び出すには、アドインのパス、及び、ファイル名を渡す。

Dim addXL As Excel.AddIn Dim strAddInName As String

On Error Resume Next

' ファイル名のみを返すには、ParsePath 関数を呼び出す。 strAddInName = ParsePath(strFilePath, FILE_ONLY)

' アドイン名を取得するためにファイル名から拡張子を削除する。 strAddInName = Left(strAddInName, Len(strAddInName) - 4) ' アドインへの参照を取得する。

Set addXL = Excel.AddIns(strAddInName) If Err <> 0 Then

Err.Clear

' アドインがコレクションにない場合は追加する。 Set addXL = Excel.AddIns.Add(strFilePath) If Err <> 0 Then ' エラーが発生した場合、プロシージャを終了する。 Load_XL_AddIn = False GoTo Load_XL_AddIn_End End If End If ' アドインをロードする。

If Not addXL.Installed Then addXL.Installed = True Load_XL_AddIn = True

Load_XL_AddIn_End: Exit Function End Function

(3)

■ コードを自動的に実行 Excel アドインがロードされて居る時にコードを自動的に実行するには、下記の 2 通りの方法が有る。 ・アドインプロジェクトの標準モジュールに、Auto_Open と謂う名前の Sub プロシージャを作成する。此のプ ロシージャ内のコードは、アドインがロードされて居る時に実行される。アドインがアンロードされて居る時 にコードを実行するには、Auto_Close と謂う名前のプロシージャを追加する。 ・アドインブックのOpen イベントプロシージャにコードを追加する。此のプロシージャのコードはアドインが ロードされて居る場合に、Auto_Open プロシージャが動作する前に実行される。 Excel 起 動 時 に ア ド イ ン を 自 動 的 に ロ ー ド す る 場 合 は 、 ア ド イ ン を C:¥Windows¥Application Data¥Microsoft¥Excel¥XLStart サブフォルダに保存する。亦、ユーザープロファイルが使用されて居る場合 は C:¥Windows¥Profiles¥<ユーザー名>¥Application Data¥Microsoft¥Excel¥XLStart サブフォルダに保存 する必要が有る。アドインが此のフォルダに保存されて居ない場合、Excel 起動時にアドインはロードされず、 Auto_Open と Workbook_Open プロシージャは孰れも実行されない。 ■ エクセルアドイン開発の実例 EXCEL2010 をでも此の方法は通用する様だが、参照設定は VBE 側で指定する必要が有る様で有る。亦、アド インのVBAProject 名も念の為に変更して置いた方が良さそうで有る。テスト時は、本体のブックを xlsm、アド インをxlam で作成した。 アドインの作り方 1.VBA でプログラムする(念の為、プロジェクト名を任意の名称に変更して置く)。 2.ブックを保存する時、拡張子を「.xla」で保存する。 3.xla ファイルを VB エディタ画面のメニュー「参照設定(R)」→「アドイン(I)」でサブ画面を開き、「参照(B)」 ボタンを押してブラウズし、登録する。 上記1~3の方法に依って、xla ファイルの標準モジュールで Public で宣言した変数やプロシージャを、共通の 変数や関数として使用出来る様に成るが、此れ丈だと、使い処が余り多く無いので、アドインツールを簡単な例 で紹介する。

(4)

アドインツールの作成

シート上で右クリックした時に表示されるショートカットメニューに項目を追加して、アドインのプログラムを 呼び出せる様にする。

1.取り敢えず、アドインの機能としては、以下を標準モジュールに記載し、上記の要領でアドインを作成する。 Public Sub AdinTest()

Msgbox "AdinTest" End Sub 2.更に、アドインファイルのThisWorkbook クラスシートに、以下のイベントプロシージャを記述する。 ブックオープン時の処理で、シート右クリック時のメニューに「AdinTest」を呼び出す項目を追加する。

Private Sub Workbook_Open() Dim cmdBr As CommandBar Dim cmdBtn As CommandBarButton ' コマンドバーの取得 Set cmdBr = Application.CommandBars("cell") ' コマンドバー項目の作成 ' 引数 Temporary には必ず True を指定する事

Set cmdBtn = cmdBr.Controls.Add(msoControlButton, , , , True) ' コマンドバー項目に属性を追加 With cmdBtn ' 項目の上に区切り線を付加 .BeginGroup = True ' 呼び出すサブプロシージャ名 .OnAction = "AdinTest" ' 項目の表示名 .Caption = "テスト項目" End With End Sub 3.アドインを作成すれば、一旦EXCEL を終了し、再度起動して、アドインファイルを EXCEL のメニューか らアドインに登録する。 4.成功すると、ショートカットメニューに下図の様に項目が表示される。 ワークシート上のセル上で右クリック。

(5)

※ コマンドバー「CELL」は 2 個存在し、1つが標準表示、今一つが改ページプレビュー表示用の様で有る。 改ページプレビュー表示時にも項目を追加するには、両方のコマンドバーに項目追加を行う必要が有る。 For Each で CommandBars コレクションのアイテムをチェックして名前が「CELL」なら項目追加と謂 う処理に成る。 5.選択するとメッセージが表示される。 注意事項 1.アドインに記述する際、対象のワークブック、ワークシート等を、明示的にActiveWorkbook、ActiveSheet、 ActiveCell と指定する事。然うしないと、アドインファイルのブックやシートを対象にしてプログラムが処 理される。逆にアドインファイルのブックやシートを指定する場合はThisWorkbook.Worksheets と記述す る。

2.コマンドバーコントロールを作成する際、Temporary 引数には必ず True を指定する事。指定すると、EXCEL の終了とと共に追加した項目も削除される。指定しないと、削除しない限り残る。

(6)

■ Visual Studio Tools for Office を用いた Excel アドイン作成

Excel のカスタマイズには一般的には VBA が用いられて居るかと思うが、今回は VBA ではなく Visual Studio Tools for Office(VSTO)を用いて、Excel をカスタマイズして行こうと思う。

VSTO を用いた Excel のカスタマイズだが、例えば、リボンに独自のメニューを追加して機能を付加すると謂う 事が可能に成る。Excel 2007 から画面上部にリボンと謂うメニューが用意されて居り、此処に独自の機能を追加 する事が出来る様に成った。 下記はExcel 2013 のリボンのホームタブの内容で有る。良く使う「貼り付け」は大きなアイコンで、「フォント の設定」はリストボックスでと謂う様に、非常にリッチなインターフェースに成って居る。 開発環境

此の記事の開発環境は、Windows 8、Visual Studio 2012(C#)、Excel 2013 で有る。

Visual Studio 2012 には Office 2013 アドインを作成する環境はデフォルトではインストールされて居ない。下 記記事を参考に開発環境を構築して置いて欲しい。

【Excel 改造】Visual Studio 2013 での Office アドイン開発【準備編】 Office アプリケーションの種類

Office を改造する Office アプリケーションには、アプリケーションレベルアドインとドキュメントレベルアドイ ンの2 種類の物が存在する。

アプリケーションレベルアドインは、Excel を例にすると、一旦 Excel にインストールされると、其の Excel で 開いたドキュメント総てで機能を実行出来る物で有る。 ドキュメントレベルアドインはVBA を用いたアプリケーションと似て居て、特定のドキュメントやテンプレー トに関連付けられるアプリケーションで有る。 ※ Office アプリケーションは上記の様にアドインと謂う形で Excel 等にプラグインする形に成る。 Excel アドインプロジェクトの作成 今回はExcel アドインと謂う Excel 其の物にインストールするタイプのアプリケーションを作成する。 ・ファイル>新規作成>プロジェクト ・テンプレート>Visual C#>Office>2010>Excel 2010 アドインを選択 ・プロジェクトの名前をExcelAddIn_Hello とする ・OK ボタンをクリック

(7)

※ 今回は Excel 2013 で動作を試して居るが、Excel 2013 専用のアドインは無く、Excel 2010 用のアドインを 作成して居る。 ソリューションエクスプローラを確認するとExcel 其の物と其のコードビハインドが確認する事が出来る。此の 関係はWPF 開発等と同じイメージで解り易い構成で有る。 亦、其のコードビハインド(ExcelAddIn_Hello.cs)は下記のコードが自動的に生成されて居る。見慣れた C#の コードなので、安心してExcel が改造出来る。 namespace ExcelAddIn_Hello {

Public partial class ThisAddIn {

private void ThisAddIn_Startup(object sender, System.EventArgs e) {

}

private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } #region VSTO で生成されたコード /// <summary> /// デザイナーのサポートに必要なメソッドです。 /// 此のメソッドの内容をコード エディターで変更しないでください。 /// </summary>

private void InternalStartup() {

this.Startup += new System.EventHandler(ThisAddIn_Startup); this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } #endregion } } イベントハンドラの追加 作成されたアドインアプリケーションには、Startup イベントと Shutdown イベントにイベントハンドラが設定 されて居る。夫々Excel 起動時、終了時に実行されるイベントのイベントハンドラに成る。此の Startup イベン

(8)

トハンドラに、Application.WorkbookBeforeSave イベントのイベントハンドラを追加する。此のイベントは「ワ ークブックが保存される前」に実行されるイベントで有る。

private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.WorkbookBeforeSave += Application_WorkbookBeforeSave; } ワークブック保存時処理の実装 先程作成したApplication_WorkbookBeforeSaveイベントに簡単な処理を記述する(下記の処理を実施して居る)。 ・(Excel の保存処理が行われる) ・アクティブなワークシートを取得する。 ・シート内のC4 に有るセルを取得する。 ・セルの値を"Hello World"にする。 コードは下記に成る:

void Application_WorkbookBeforeSave(Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel) {

Excel.Worksheet activeWorksheet = ((Excel.Worksheet)Application.ActiveSheet); if (activeWorksheet != null)

{

Excel.Range nameCell = activeWorksheet.get_Range("C4"); nameCell.Value2 = "Hello World";

} }

アプリケーションの実行

アプリケーションをVisual Studio で実行すると、空の Excel ファイルが開く。其処で Ctrl+S 等でファイルを保 存する事にする。ファイル名等を入力して保存を終了すると、C4 セルに"Hello World"とテキストが表示される。

参照

関連したドキュメント

本体背面の拡張 スロッ トカバーを外してください。任意の拡張 スロット

BRAdmin Professional 4 を Microsoft Azure に接続するには、Microsoft Azure のサブスクリプションと Microsoft Azure Storage アカウントが必要です。.. BRAdmin Professional

ダウンロードファイルは Excel 形式、CSV

Excel へ出力:見積 受付・回答一覧に表示されている伝票を Excel に出力 することが可能.

実際, クラス C の多様体については, ここでは 詳細には述べないが, 代数 reduction をはじめ類似のいくつかの方法を 組み合わせてその構造を組織的に研究することができる

(※)Microsoft Edge については、2020 年 1 月 15 日以降に Microsoft 社が提供しているメジャーバージョンが 79 以降の Microsoft Edge を対象としています。2020 年 1

Bluetooth® Low Energy プロトコルスタック GUI ツールは、Microsoft Visual Studio 2012 でビルドされた C++アプリケーションです。GUI

(1) テンプレート編集画面で、 Radius サーバ及び group server に関する設定をコマンドで追加して「保存」を選択..