VB-Reportのまとめ

VB-Reportの使い方について調べたことのまとめ

まずExcelで帳票のレイアウトを作成する。
既存のものを流用してもOK

「参照の追加」で
  • VBReport.dll
  • VBReport.XlsCrt.dll
  • VBReport.XlsPDF.dll
  • VBReport.XlsReportCtrl.dll
を追加する。
[出力ディレクトリにコピー]は[常にコピーする]を選択しておくと配布ミスが無くなる。

「追加」-「既存の項目」で
  • msvcr71.dll
を追加する。
[出力ディレクトリにコピー]は[常にコピーする]を選択しておくと配布ミスが無くなる。
これを忘れると開発環境では問題ないが、実行環境で例外エラーが出る場合あり

「追加」-「既存の項目」で作成しておいたExcelの帳票レイアウトファイルを追加する。
[ビルドアクション]を[埋め込まれたリソース]にする。
※埋め込むと配布後は帳票の調整ができない。Excelで調整したい場合は[コンテンツ]にする。

帳票印刷のためのコードを書く
   '-----ルート名前空間を取得する-----
   '埋め込まれたリソース(印刷用レイアウトファイル)を利用するために必要
   Dim AppNameSpace As String
   Dim type As System.Type
   type = Me.GetType()
   AppNameSpace = type.Namespace
   Dim EmbedFileName As String = AppNameSpace & "." & "帳票レイアウト.xls" '作成したExcelの帳票レイアウトファイル
   '----------------------------------

   Dim rptCtrl As New VBReport.XlsReportCtrl.XlsReportCtrl
   Dim srmExcelFile As System.IO.Stream = Nothing

   Try
     '印刷用Layout定義
     rptCtrl.CtrlMode = VBReport.XlsReportCtrl.xlCtrlMode.cmHide
     rptCtrl.Option.ExcelMode = True  '印刷にExcelオブジェクトを使うかどうか?
     rptCtrl.Printer.ColorMode = True  'カラー印刷するかどうか?
     rptCtrl.Option.ProgressDialog = False '印刷の処理経過ダイアログを表示するか?

     '埋め込まれたリソースの使用
     Dim asmExcelFile As System.Reflection.Assembly
     asmExcelFile = System.Reflection.Assembly.GetExecutingAssembly
     srmExcelFile = asmExcelFile.GetManifestResourceStream(EmbedFileName)

     'プリンタ設定
     If rptCtrl.Option.SetPrinter(True, "") = False Then
      Exit Sub
     End If

     'ページを開始
     rptCtrl.Start.Embed(srmExcelFile)
     rptCtrl.Page.Begin("帳票シート", "1") 'レイアウトのシート名を指定する

     rptCtrl.Cell("A1").Value = TextBox1.Text '(A1 参照形式)

     rptCtrl.Pos(1,1).Value = TextBox2.Text '(R1C1 参照形式) "A1"セルは(0,0)

     '印刷する
     rptCtrl.Page.End()
     rptCtrl.Out.DoPrint("帳票シート") 'レイアウトのシート名を指定する

   Catch ex As Exception
     MsgBox(ex.Message)
   Finally
     rptCtrl.Dispose()

     ' 読み込んだリソースを閉じる
     srmExcelFile.Close()
   End Try
rptCtrl.Option.ExcelModeでExcelを使う(True)と帳票の表現力が向上する。
ただし実行環境にExcelが必要になる。
rptCtrl.Printer.ColorModeでカラー印刷(True)とグレースケール印刷(False)を選択する。
プリンタの設定でカラーにしているのに、グレースケールで出力されてすこし嵌った。

まだまだいろいろなことができそうだ。