今日は、久しぶりに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の優れたレポート機能を活用することは、大きなメリットになるでしょう。
それでは、また。
だい
現在制作中の業務管理システムにおいて、
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の優れたレポート機能を活用することは、大きなメリットになるでしょう。
それでは、また。
だい