今回は
・印刷の位置を調整できるようにする
です。
まず調整値を設定するフォームを作成する。
作成したフォームにコードを書く
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修正(追加)したのは'-----ページ余白の設定-----のあたりのコード
このシリーズ、もう少し続きそうです。