今回は
・印刷の位置を調整できるようにする
です。
まず調整値を設定するフォームを作成する。
作成したフォームにコードを書く
Public Class Form印刷余白設定 Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load AddHandler Me.FormClosing, AddressOf CommonLib.Form_FormClosing AddHandler tb余白_上.Enter, AddressOf CommonLib.tb_Enter AddHandler tb余白_左.Enter, AddressOf CommonLib.tb_Enter AddHandler tb余白_上.Leave, AddressOf CommonLib.tb_Leave AddHandler tb余白_左.Leave, AddressOf CommonLib.tb_Leave AddHandler tb余白_上.Validating, AddressOf CommonLib.tb_Validating_Decimal AddHandler tb余白_左.Validating, AddressOf CommonLib.tb_Validating_Decimal End Sub Private Sub Form印刷余白設定_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated tb余白_左.Text = My.Settings.余白_左 tb余白_上.Text = My.Settings.余白_上 tb余白_上.Focus() End Sub Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click My.Settings.余白_左 = tb余白_左.Text My.Settings.余白_上 = tb余白_上.Text My.Settings.Save() Me.Close() End Sub Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click Me.Close() End Sub End Classあと前回書いた帳票を印刷するコードも修正する
Private Sub 出力_合計請求書()
'-----和暦の処理-----
Dim Japan As New System.Globalization.JapaneseCalendar
'--------------------
'-----ルート名前空間を取得する-----
'埋め込まれたリソース(印刷用レイアウトファイル)を利用するために必要
Dim AppNameSpace As String
Dim type As System.Type
type = Me.GetType()
AppNameSpace = type.Namespace
Dim EmbedFileName As String = AppNameSpace & ".PrintForm.xls"
'----------------------------------
Dim rptCtrl As New VBReport.XlsReportCtrl.XlsReportCtrl
Dim srmExcelFile As System.IO.Stream = Nothing
Dim str出力プリンタ As String = ""
Try
'印刷用Layout定義
rptCtrl.CtrlMode = VBReport.XlsReportCtrl.xlCtrlMode.cmHide
rptCtrl.Option.ExcelMode = True
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")
'-----ページ余白の設定-----
Dim 余白_左 As Integer
If Not Integer.TryParse(My.Settings.余白_左, 余白_左) Then
余白_左 = 0
End If
Dim 余白_上 As Integer
If Not Integer.TryParse(My.Settings.余白_上, 余白_上) Then
余白_上 = 0
End If
rptCtrl.Page.Attr.Margin(余白_左, 0, 余白_上, 0, 0, 0)
'--------------------------
If cb月限.Text.Length = 0 Then
'何もしない
Else
rptCtrl.Cell("D3").Value = " " & cb月限.Text & "月限"
End If
rptCtrl.Cell("AZ3").Value = "平成 " & Japan.GetYear(dtp発行日.Value) & " 年 " & dtp発行日.Value.Month.ToString.PadLeft(2) & " 月 " & dtp発行日.Value.Day.ToString.PadLeft(2) & " 日"
rptCtrl.Cell("D5").Value = tb1行目.Text & vbNewLine & tb2行目.Text
rptCtrl.Cell("P10").Value = "\" & CDec(tb今回請求金額.Text).ToString("#,##0") & ".-"
'印刷する
rptCtrl.Page.End()
rptCtrl.Out.DoPrint("合計請求書")
Catch ex As Exception
MsgBox(ex.Message)
Finally
rptCtrl.Dispose()
' 読み込んだリソースを閉じる
srmExcelFile.Close()
End Try
End Sub
修正(追加)したのは'-----ページ余白の設定-----のあたりのコードこのシリーズ、もう少し続きそうです。