パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

VBのフォームから、Accessのレポートを印刷する(VisualStudio.NET以降)

2011-07-28 09:00:16 | Visual Basic
今日は、久しぶりにViasual Basicを取り上げます。

現在制作中の業務管理システムにおいて、
VBからAccessのレポートを印刷する必要が出てきました。

そこで、その方法をご紹介します。

今回は、VBのフォームにあるボタンをクリックすると、
指定されたアクセスファイルが開かれ、指定したレポートを印刷するという処理を実装します。

アクセスファイルは、VBの実行ファイルと同じフォルダ内に用意しておいてください。
実行ファイルは、デバッグの際には、保存したプロジェクトフォルダの中の
binフォルダ内のDebugフォルダ内に作成されます。
ここに今回は、yaoya.mdbという名前のアクセスファイルをコピーしておきます。
また、印刷するレポート名は、「卸商品明細」とします。




まずは、VisualStudioを起動し、任意の名前で新規プロジェクトを作成してください。
画面は、VisualStudio2008ですが、>NET以降のバージョンなら大丈夫です。

フォームにボタンを1つ貼り付けます。
コントロール名は、初期設定のままでいきます。
表示文字列は、「印刷」としました。(Textプロパティです)



このボタンをダブルクリックすると、コードウィンドウに切り替わります。

以下のように書いてください。

Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) _
               Handles Button1.Click
    'Accessファイルを開き、レポートを印刷()
    'この実行ファイルと同じディレクトリにあるとする
    'ファイル名は、yaoya.mdb

    Dim myPath As String = My.Application.Info.DirectoryPath & "\yaoya.mdb"
    Dim AccObj As Object = CreateObject("Access.Application")

    With AccObj
      .OpenCurrentDataBase(myPath)
      .DoCmd.OpenReport("卸商品明細")
      .Quit()
    End With

    AccObj = Nothing
    MessageBox.Show("印刷が終了しました")

  End Sub
End Class

画像も載せておきます。



実行ファイルのパスは、My.Application.Info.DirectoryPath で簡単に取得できます。

アクセスアプリケーションのインスタンスは、CreateObject で作成します。
あとは、そのインスタンスのもつメソッドを記述します。
OpenCurrentDataBaseメソッドでデータベースファイルを開き、
DoCmd.OpenReport で、レポートの印刷を行います。
DoCmdオブジェクトは、AccessVBAを書いたことのある方ならおなじみでしょう。
最後に、Quitメソッドでアプリケーションを終了します。

なお、AccObj にNothingを代入することで、インスタンスを削除しています。





実行すると、ちゃんとプリンタからレポートが印刷されて出てきました。

VBで印刷関係を実装するとなると、結構大変です。
Accessの優れたレポート機能を活用することは、大きなメリットになるでしょう。


それでは、また。


だい
コメント (6)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【おすすめ】

パソコン買ったらまず入れる10のアプリ