.NET以前(以後VB6)では印刷する場合にはPrinterオブジェクトを利用していましたが、.NETからは、PrintDocumentクラスを利用して印刷します。
しかし、Printerオブジェクトを利用して印刷ロジックを作成したものを、アップグレードウィザードで.NETへ変換しても、変換してくれません。
なので、PrintDocumentクラスを利用したロジックに書き換えなければならにのですが、そんな事してられませんよね?
そこで、Visual Basic 2005 Power PacksのMicrosoft Printer Compatibility Library 1.0を利用しましょう。
Microsoft Printer Compatibility Library 1.0を利用することにより、簡単にVB6のPrinterオブジェクトの資産を活用することができます。
詳しい説明は、インストールデータ内にHTMLヘルプ(英語)が付属してるので、そちらを参考にして下さい。
■参照の追加と名前空間
Microsoft.VisualBasic.PowerPacks.Printing.Printerを追加します。

次に名前空間を指定します。
Imports Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6
■簡単なサンプル
フォームにコマンドボタンを配置した簡単なサンプルです。
Imports Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim PrinterVB6 As New Printer
With PrinterVB6
.ScaleMode = vbMillimeters
.FontSize = 60
.FontName = "MS ゴシック"
.CurrentX = 30
.CurrentY = 30
.Print("テスト印刷")
.Circle(50, 50, 30)
.Line(10, 10, 100, 200, , True)
.PaintPicture(Drawing.Image.FromFile("C:\vb.jpg"), 100, 200)
.EndDoc()
End With
End Sub
End Class
違和感なく、.NETよりVB6のように印刷することができますね。
NewPageメソッドも利用できるので、PrintDocumentクラスでPrintPageイベントの引数のPrintPageEventArgs.HasMorePagesプロパティを制御するより簡単ですね。
■ちょっと便利な機能
上記のコードでは、プリンタに印刷しますが、PrintActionプロパティにPrintToPreviewを指定することにより、プレビュー画面を表示することも可能です。
Imports Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim PrinterVB6 As New Printer
With PrinterVB6
''プレビューを行う
.PrintAction = Printing.PrintAction.PrintToPreview
''
.ScaleMode = vbMillimeters
.FontSize = 60
.FontName = "MS ゴシック"
.CurrentX = 30
.CurrentY = 30
.Print("テスト印刷")
.Circle(50, 50, 30)
.Line(10, 10, 100, 200, , True)
.PaintPicture(Drawing.Image.FromFile("C:\vb.jpg"), 100, 200)
.EndDoc()
End With
End Sub
End Class
これを実行すると、プレビュー画面が表示されましたね。