Oracle Smart View for Office(Smart View)の応用:VBAからの起動について

BI技術者の雑記

Oracle Smart View for Office(Smart View)とは、OracleのEnterprise Performance Management(EPM)およびBusiness Intelligence(BI)専用に設計された共通のMicrosoft Officeインタフェースです。

本コラムでは、Microsoft Excel Visual Basic for Applications(VBA)からOracle Smart View for Officeのアプリケーションを定義し、EPMへの接続や基本的な関数の使用例をご紹介します。

1.VBAコード関数の定義

※ここではVBAのコード関数の定義の方法を説明します。
SmartViewがすでにインストールされていることが前提条件となります。

SmartViewをインストールしたフォルダ(デフォルトは「C:¥Oracle¥SmartView」)の「bin」フォルダ内に「smartview.bas」というファイルがあるので、エディタで開きます。

●「smartview.bas」をエディタで開いた画面

※画像をクリックすると新しいタブで開きます。

be18_01.jpg

SmartViewで使用できる関数がすべて定義されているので、全選択し、クリップボードにコピーします。
Excelを実行し、Visual Basic Editorを開きます。
メニューから挿入 → 標準モジュールを選択し、標準モジュールを追加します。
追加した標準モジュールの名称を「SmartViewVBA」に変更したら、標準モジュールを開き、クリップボードにコピーしてある内容をペーストします。
(ペースト後に、先頭行の「Attribute VB_Name = “SmartViewVBA”」は構文エラーになるため削除します。)
これでSmartView関数を使用する準備ができたので、次章で接続関数の使用方法を説明します。

●「smartview.bas」をVisual Basic Editorにペースト後の画面

※画像をクリックすると新しいタブで開きます。

be18_02.jpg

2.接続関数について

Visual Basic Editorにサブプロシージャを新規作成し、以下のSmartViewのデータプロバイダ接続用の関数を定義します。
※なお、ここでの接続先プロバイダはOracle Hyperion Planning(以下Planning)とします。

2-1.データプロバイダ接続用関数(HypCreateConnection)

例)

rt = HypCreateConnection(vtSheetName, vtUserName, vtPassword, vtProvider, vtProviderURL, vtServerName, vtApplicationName, vtDatabaseName, vtFriendlyName, vtDescription)

rtはVBA上で定義された関数の戻り値を保持する変数となります。
実行時エラーとなった場合に0以外の戻り値が戻されます。

■各パラメータの設定は以下となります。

  • vtSheetName:未使用
  • vtUserName:有効なユーザー名
  • vtPassword:このユーザーのパスワード
  • vtProvider:データ・プロバイダ。サポートされるvtProviderのタイプを次に示します。ここでは「HYP_PLANNING 」を固定で指定します。
  • vtProviderURL:データ・プロバイダのURL
  • vtServerName:アプリケーションが存在するサーバーの名前
  • vtApplicationName:アプリケーション名
  • vtDatabaseName:データベース名
  • vtFriendlyName:データ・プロバイダの接続名
  • vtDescription:データ・プロバイダの説明

関数を定義したらVBAで実行します。
戻り値に0が戻っていれば、データベースプロバイダとの接続は成功しています。

●接続用関数(HypCreateConnection)実行後の画面

※画像をクリックすると新しいタブで開きます。

be18_03.jpg

2-2.データソース接続関数(HypUIConnect)

例)

rt = HypUIConnect(vtSheetName, vtUserName, vtPassword, vtFriendlyName)

■各パラメータの設定は以下となります。

  • vtSheetName:関数を実行するワークシートの名前。vtSheetNameがNullまたはEmptyの場合、アクティブなワークシートが使用されます。
  • vtUserName:有効なユーザー名。ユーザ名はPlanningでは指定することができないため「Null」固定となります。
  • vtPassword:このユーザーのパスワード。パスワードはPlanningでは指定することができないため「Null」固定となります。
  • vtFriendlyName:データ・プロバイダの接続名。HypCreateConnectionで設定したデータ・プロバイダの接続名を指定します。

VBAで実行すると、ログイン認証用のプロンプトが表示されるので、ユーザIDとパスワードを入力しログインします。
ログイン後に戻り値の値が0であれば、Planningの接続は成功しています。

●ログイン認証用のプロンプト

be18_04.jpg

3.その他関数について

SmartViewのVBA関数には、データを取得するための様々な関数が準備されています。
ここでは代表的な関数の使用例として、データの取得(HypMenuVRefresh)、データの更新(HypSubmitData)、メンバのズームイン(HypMenuVZoomIn)の使用方法を実施してみます。

3-1.データの取得(HypMenuVRefresh)

例)

rt = HypMenuVRefresh()
※パラメータはありません。

前章において接続した後にリフレッシュ関数を実行すると、Planningのデータを取得することができます。
今回は取得のために、Excelシート上にデータ取得用のメンバを配置して(※1)、リフレッシュを実行します。
サンプルでは2021年度4月時点の確定実績 総売上高のデータを取得するように配置し、実行した結果となります。
※1:Excelシート上に何も定義されてない場合は、Planningで定義されているすべての次元のメンバがシート上にマトリックス形式で展開され、データが表示されます。

●リフレッシュ関数(HypMenuVRefresh)実行後のExcelシート

be18_05.jpg

3-2.データの更新(HypSubmitData)

例)

rt = HypSubmitData(vtSheetName)

パラメータの設定は以下となります。

  • vtSheetName:関数を実行するワークシートの名前。vtSheetNameがNullまたはEmptyの場合、アクティブなワークシートが使用されます。

更新したデータをPlanningに送信する関数になります。
ここでは先ほど取得したデータを変更して、データ更新の関数を実行します。
データを10000 ⇒ 11000に変更すると、セルの色が変わります(この状態ではまだデータの更新は未完了)。
その状態のままデータの更新関数を実行し、処理が正常終了するとセルの色が変更前の色(薄い黄色)に戻ればデータは更新されたことになります。

●データ変更後のExcelシート

be18_06.jpg

●データの更新(HypSubmitData)実行後のExcelシート

be18_07.jpg

3-3.メンバのズームイン(HypMenuVZoomIn)

例)

rt = HypZoomIn(vtSheetName, vtSelection, vtLevel, vtAcross)

パラメータの設定は以下となります。

  • vtSheetName:関数を実行するワークシートの名前。vtSheetNameがNullまたはEmptyの場合、アクティブなワークシートが使用されます。
  • vtSelection:ズーム・インするメンバーを参照する範囲オブジェクト。選択がNullまたはEmptyの場合、アクティブなセルが使用されます。
  • vtLevel:ズームのレベルを示す数値。使用可能なレベルを次に示します。
    0 = 次のレベル
    1 = すべてのレベル
    2 = 最下位レベル
  • vtAcross:未使用。

選択したPlanningのメンバに対してズームイン(ドリルダウン)を実施する関数になります。
ズームインのためのメンバを配置して、A3セルをアクティブセルにした状態でズームイン(HypMenuVZoomIn)関数を実行すると、シート上のA列にズームイン後のメンバが展開されます。

●メンバのズームイン(HypMenuVZoomIn)実行前のExcelシート

be18_08.jpg

●メンバのズームイン(HypMenuVZoomIn)実行後のExcelシート

be18_09.jpg

4.おわりに

今回はSmartView応用編として、VBAからSmartView関数の使用方法についてご紹介しました。
今回ご紹介した関数は使用頻度の高い一部の関数のみの使用方法となりますが、実際はSmartViewのメニューに登録されているコマンドは全てVBA上で使用することが可能です。

実運用で使用する際には、SmartView関数とVBAの関数を組み合わせて使用することにより、柔軟な形式の帳票を生成することができるのでお試しください。


■おすすめ記事
Oracle Smart View for Office(Smart View)の基礎:インストール、設定項目について

BI_banner01.png