AdvanceSoftware Tech Blog

アドバンスソフトウェア株式会社の技術ブログ

VB-ReportでExcelのインストールが必要になるケース

VB-Reportでは実行環境にインストールされたExcelの機能を呼び出すことで、製品単体では対応していないExcel修飾機能をプレビューや印刷結果に反映させることが可能です。
反対に、製品単体でも多様なExcel修飾機能に対応しており、Excelを使用せずとも実現できる場合が多くあります。

この記事ではVB-Reportを使用する上で、Excelのインストールが必要か判断できるように詳細をお伝えしていきます。

Excelの機能で可能になること

Excelの機能を使用した場合、主に以下のことが可能になります。

反映できる出力結果 機能
プレビュー+印刷に反映可能 グラフ
数式の再計算結果
印刷のみ反映可能 未対応図形
印刷範囲
印刷タイトル

※数式の再計算はApplyFormulaプロパティでも対応可

グラフの反映(プレビュー/印刷)

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のプレビューです。
Excelの機能を使用しない場合にグラフが表示されていないことが確認できます。

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のPDFプリンターで印刷した結果です。
プレビュー同様、Excelの機能を使用しない場合にグラフが表示されていないことが確認できます。

未対応図形の反映(印刷)

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のPDFプリンターで印刷した結果です。
Excelの機能を使用しない場合にVB-Reportが対応していない図形やワードアートなどが表示されていないことが確認できます。

Excelの機能の使用有無に関わらず、プレビューではこれらの機能を表示することはできません。

数式の再計算結果の反映(プレビュー/印刷)

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のプレビュー結果です。
Excelの機能を使用しない場合に数式の再計算が行われていないことが確認できます。

なお、CellReport.ApplyFormulaプロパティにTrueを設定することでも数式や一部のExcel関数の再計算結果を反映することが可能です。Excelのインストールが難しい場合などに適した機能です。

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のPDFプリンターで印刷した結果です。
プレビュー同様、Excelの機能を使用しない場合に数式の再計算が行われていないことが確認できます。

帳票内の表は次のように値の設定を行っています。

設定元 設定内容
1列目 テンプレート Excelファイルで予め設定
1
2列目 プログラム Valueプロパティで数値を設定
11
3列目 プログラム Valueプロパティで数値を設定
22
4列目 テンプレート Excelファイルで予め設定
SUM(C4:D4)
5列目 プログラム FuncメソッドでSUM関数を設定
Func("SUM(C4:D4)", null)
6列目 プログラム Funcメソッドで数式とその数式の計算結果を設定
Func("C4*D4", 242)

印刷範囲の反映(印刷)

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のPDFプリンターで印刷した結果です。
プレビュー同様、Excelの機能を使用しない場合に印刷範囲の設定が反映されていないことが確認できます。

Excelの機能の使用有無に関わらず、プレビューでは印刷範囲を反映した表示をすることはできません。

印刷タイトルの反映(印刷)

左がExcelの機能を使用した場合、右がExcelの機能を使用しない場合のPDFプリンターで印刷した結果です。
プレビュー同様、Excelの機能を使用しない場合に印刷タイトルの設定が反映されていないことが確認できます。

Excelの機能の使用有無に関わらず、プレビューでは印刷タイトルを反映した表示をすることはできません。

その他

製品独自機能、Excel機能でそれぞれの対応内容は弊社Webサイトの下記ページでご確認頂けます。

対応する Excel 修飾機能 - VB-Report 11 | アドバンスソフトウェア株式会社

Excelの機能を使う方法

VB-ReportでExcelの機能を使用するタイミングはExcelファイルの保存、または印刷のいずれかです。

Excelの機能は以下いずれかの方法で使用することができます。

  • ExcelModeプロパティにTrueを設定する
  • CellReport.Report.PrintOutメソッドによる印刷
  • ReportMode.LegacyによるExcelファイル保存

ExcelModeプロパティにTrueを設定する

ExcelModeプロパティは真偽値(True/False)の設定によって、Excelの使用有無を任意に切り替えることができる機能です。
基本的には帳票作成前にExcelModeプロパティの設定を行います。

// Excelの機能を使用する設定
cellReport.ExcelMode = true;

cellReport.Report.Start(ReportMode.Speed);
cellReport.Report.Create(ExcelVersion.ver2021);
cellReport.Page.Start("Sheet1", "1");
cellReport.Cell("A1").Value = "アドバンスソフトウェア";
cellReport.Page.End();
cellReport.Report.End();
cellReport.Report.SaveAs(@"C:\out1.xlsx");

ExcelModeプロパティにTrueが設定されている場合、プレビューやPDFファイルに対し計算式の再計算結果やグラフなどが反映されます。 また、印刷はExcelの機能によって行う動作となります。
反対に、ExcelModeプロパティにFalseが設定されている場合、Excelの機能は使用せず製品独自機能でファイル保存や印刷を行います。

なお、後述のReportクラスのPrintOutメソッドでの印刷、ReportMode.Legacy設定時のExcelファイル保存では、ExcelModeプロパティの設定に関わらず必ずExcelの機能を使用します。

CellReport.Report.PrintOutメソッドによる印刷

ビューアを介さずCellReportクラス単体でも印刷することが可能です。
CellReport.Report.PrintOutメソッドを使用して印刷を行います。
この場合は必ずExcelの機能を使用した印刷が行われます。

cellReport.Report.Start(ReportMode.Speed);
cellReport.Report.Create(ExcelVersion.ver2021);
cellReport.Page.Start("Sheet1", "1");
cellReport.Cell("A1").Value = "アドバンスソフトウェア";
cellReport.Page.End();
cellReport.Report.End();

// Excelを呼び出して印刷を行います。
cellReport.Report.PrintOut();

ReportMode.LegacyによるExcelファイル保存

VB-Report 10.0 for .NET以降では以下2つの帳票作成モードがあります。

  • ReportMode.Speed:高速に帳票を作成するモード
  • ReportMode.Legacy:VB-Report 8.0 for .NETと同じ方式で帳票を作成するモード

この2つのモードは、CellReport.Report.Startメソッドの引数で設定します。

// VB-Report 8.0 for .NETと同じ方式の帳票作成モードに設定します。
cellReport.Report.Start(ReportMode.Legacy);

cellReport.Report.File();
cellReport.Page.Start("Sheet1", "1");
cellReport.Cell("A1").Value = "アドバンスソフトウェア";
cellReport.Page.End();
cellReport.Report.End();
cellReport.Report.SaveAs("out.xlsx");

VB-Report 8.0 for .NETではExcelの機能を使用したExcelファイルの保存を行っており、ReportMode.Legacyを設定した場合はこれと同じ動作となります。

Excelの機能が使用できない場合の確認事項

Excelの呼び出しに失敗する場合がありますが、Excel自体の制限や実行環境依存の問題など原因は様々です。

動作保証外のExcelを使用している

VB-Reportが対応するExcelは永続版のMicrosoft Excelデスクトップ アプリのみとなり、サブスクリプション版の場合、機能更新により正常に動作しない恐れがあります。 対応しているExcelのバージョンは以下の通りです。

Excel 2003/2007/2010/2013/2016/2019/2021

Microsoft 365やサードパーティExcel互換ソフトなどでは動作保証を行っていません。

レジストリの登録状況の影響

VB-Reportでは環境のレジストリを参照してExcelのインストール有無の判断を行っていますが、過去にレジストリ情報が正しく登録されていないことでExcelを起動することができない事例がありました。

Excelの呼び出しに失敗する場合は下記の手順を参考にレジストリの登録状況に異常がないかご確認ください。

  1. [ファイル名を指定して実行]から"regedit"と入力し、Enter キーを押下し、レジストリエディタを起動します。
  2. レジストリエディターの起動後、左側のツリーにて[HKEY_CLASSES_ROOT]を展開します。
  3. ツリーの[HKEY_CLASSES_ROOT]内に、キー[Excel.Application]が含まれているかどうかをご確認ください。

サーバーサイドオートメーションとしての使用

サーバーサイドでのExcelオートメーションの利用については、マイクロソフト社様でサポートされていない使用方法となり、Office製品のライセンス等の問題も懸念されるため、弊社では推奨もサポートもできない使用方法となります。

さいごに

VB-ReportでExcelの機能を使用した場合の動作について説明させていただきました。
Excelの機能を使用しなくても様々なレイアウトを製品機能のみで実現することも可能ですので、当記事を参考に実行環境へのExcelのインストールについてご検討ください。

© 2022 Advance Software Co., Ltd. All Rights Reserved.