ゆうちょ振替用紙の印字を自力で解決!まずは独自テンプレートづくりから

furikaetempeyecatcha

ゆうちょ振替用紙への印字方法について考えます。今回ははめ込み印字のためのテンプレートを作成します。
小さな用紙ですので画面表示の拡大率を上げるなどの工夫で行います。

こんにちは、じゅんぱ店長(@junpa33)です。

今回より「ゆうちょの振替」用の「振替用紙(払込取扱票)」の作成の方法を説明していきます。

まずは、テンプレートづくりからです。

「振替用紙(払込取扱票)」はもともとのサイズが結構小さいので

テンプレートづくりは細かい作業になりますが、

画面表示を拡大しながらの作業を行っていきましょう。

請求時に添付したい「振替用紙(払込取扱票)」の作成についての概要は、

一つ前のこの記事↓で確認できます。

firikaeinjieyecatch 既製の振込用紙の宛先印字はエクセルで可能!ゆうちょ振替で代金払い

ゆうちょ振替用紙の独自テンプレート作成方針

furikaetemp006

今回の作るテンプレートは、

振替用紙(払込取扱票)をそのままコピーしたものを、エクセルシート上に再現するというものではありません。

テンプレート作成の目的は、

既製の振替用紙(払込取扱票)に口座番号や、振替先、振替元、住所などを印字することです。

すでにある振替用紙(払込取扱票)を印刷用紙として使いますので、マス目や罫線印字は必要ありません。

なので、

いつものように作るテンプレートのような、文字や罫線を使った表や伝票とは違ったものになります。

数字や文字を打ち込むセルを実際の振替用紙の記入位置に合わせることが目的です。

テンプレートの印字については、前の記事でも説明した通り

普通にそのまま作成して印刷したのでは、どうしても印刷できない部分が出来てしまいます。

テンプレートを作成して印刷しようとした場合解決をしないといけない問題

そこで、プリンターの印刷可能エリアによる印字範囲制限をクリアーするために、

この解決策として、エクセルシート上に「テンプレートを上下逆」に作成することにします。

印字範囲的には、この上下逆印刷案でOKと言うことが分かりましたが、

エクセルの「セルにタイプする印字内容」が正立した文字だと、全く意味を成しません。

上下逆印刷案では「セルにタイプする印字内容」も全て倒立した文字であることが必要です。

それを踏まえたうえで、今回は上下逆印刷のための独自テンプレートを作成していきます。

独自テンプレートを作っていきます

furikaetemp007

これから作成する「ゆうちょ払込取扱票印字」ソフトは、テンプレート内のそれぞれのセルに、直接取引金額と内容を表示して印刷するというものです。

つまり、テンプレートについては何度も使用されることになります。

そこで、

ソフト使用中での、テンプレートの破損や誤削除を防止するために、テンプレートを使わない時は、「シート保護」をかけてロックしておきます。

「ゆうちょ払込取扱票印字」ソフト使用時には、このテンプレートを別のシート上にコピーして使用するようにします。

1.エクセルBOOKを作ります

エクセルを起動し、「新規」から「空白のブック」をクリックします。

作成された新しいBOOKを、名前を付けて保存で、「マクロ有効ブック*.xlsm」で「振替用紙印字.xlsm」として保存します。

2.テンプレートを作成します

保存した「振替用紙印字.xlsm」を開き「Sheet3」にテンプレートを作成していきます。

初めにエクセルシートを方眼紙にします。

用紙のサイズが小さいので1マスを5ピクセルとします。

furikaetemp001a

拡大表示100%では作業できませんので、400%で行います。

薄い点線の罫線でセルを見やすくしておきます。

furikaetemp002a

これを一旦、プリントアウトします。

この時、印刷設定で、余白を上下左右「0」にしてください。

書き込みマス位置を確認します。

実際の既製の振替用紙を、プリントした方眼紙に当てて振替用紙の「書き込みマス」の方眼紙位置をチェックしていきます。

ちょっとしたコツとしては、振替用紙の上の方(方眼紙で言うと下の方)から「書き込みマス」のサイズ合わせをしていくことです。

このような方法で、振込用紙と方眼紙を合わせていって、下の画像のように作ります。上下を逆に作っています。

赤丸のセルは、隣のセルとの結合セルになります。

furikaetemp003a

セルサイズの設定をします。

各セルのサイズ設定はこのようになります。

各行の高さ
  • 1行目  45ピクセル
  • 2行目  15ピクセル
  • 3行目  50ピクセル
  • 4行目  19ピクセル
  • 5行目  14ピクセル
  • 6行目  20ピクセル
  • 7行目  63ピクセル
  • 8行目  34ピクセル
  • 9行目  14ピクセル
  • 10行目  48ピクセル
  • 11行目  43ピクセル
  • 12行目  34ピクセル
  • 13行目  7ピクセル
  • 14行目  6ピクセル
  • 15行目  24ピクセル
各列の幅
  • A列  5ピクセル
  • B列  21ピクセル
  • C列  11ピクセル
  • D列  11ピクセル
  • E列  11ピクセル
  • F列  11ピクセル
  • G列  21ピクセル
  • H列  21ピクセル
  • I列  21ピクセル
  • J列  21ピクセル
  • K列  20ピクセル
  • L列  20ピクセル
  • M列  43ピクセル
  • N列  21ピクセル
  • O列  21ピクセル
  • P列  21ピクセル
  • Q列  21ピクセル
  • R列  21ピクセル
  • S列  21ピクセル
  • T列  21ピクセル
  • U列  21ピクセル
  • V列  20ピクセル
  • W列  21ピクセル
  • X列  21ピクセル
  • Y列  21ピクセル
  • Z列  21ピクセル
  • AA列  21ピクセル
  • AB列  21ピクセル
  • AC列  21ピクセル
  • AD列  10ピクセル
  • AE列  20ピクセル
  • AF列  10ピクセル
  • AG列  21ピクセル
  • AH列  21ピクセル
  • AI列  21ピクセル
  • AJ列  21ピクセル
  • AK列  16ピクセル

一つずつセットしていくのは大変ですので、

この下のVBAをモジュールに張り付けて実行すれば、作業が簡単になります。

VBAからのセルの高さと幅の指定は単位がポイントになります。
ピクセルをポイントに換算していますが、列幅は換算したポイント数をシートで表示しきれない(近似値表示になる)ので、列幅は手作業で調整が必要です

このコードはこれ一回の使い道ですので、利用後は用済みになります。適時消去していただければOKです。

VBA
Sub tmpセル設定()
    Dim i As Long
    Dim R(14) As Long
    Dim C(36) As Long
        Worksheets("Sheet3").Select
        R(0) = 45
        R(1) = 15
        R(2) = 50
        R(3) = 19
        R(4) = 14
        R(5) = 20
        R(6) = 63
        R(7) = 34
        R(8) = 14
        R(9) = 48
        R(10) = 43
        R(11) = 34
        R(12) = 7
        R(13) = 6
        R(14) = 24
        C(0) = 5
        C(1) = 21
        C(2) = 11
        C(3) = 11
        C(4) = 11
        C(5) = 11
        C(6) = 21
        C(7) = 21
        C(8) = 21
        C(9) = 21
        C(10) = 20
        C(11) = 20
        C(12) = 43
        C(13) = 21
        C(14) = 21
        C(15) = 21
        C(16) = 21
        C(17) = 21
        C(18) = 21
        C(29) = 21
        C(20) = 21
        C(21) = 20
        C(22) = 21
        C(23) = 21
        C(24) = 21
        C(25) = 21
        C(26) = 21
        C(27) = 21
        C(28) = 21
        C(29) = 10
        C(30) = 20
        C(31) = 10
        C(32) = 21
        C(33) = 21
        C(34) = 21
        C(35) = 21
        C(36) = 16
        For i = 0 To 36
            If i < 15 Then
                Rows(i + 1).RowHeight = R(i) * 0.75
                Columns(i + 1).ColumnWidth = C(i) * 10 / 85
            Else
                Columns(i + 1).ColumnWidth = C(i) * 10 / 85
            End If
        Next i
End Sub

テンプレートの保存と保護

作成が出来ましたら、このテンプレートのシート名を「印刷用tmp」として保存してください。

細かいテンプレートですので、間違って触って変更してしまわないようシートの保護をしておきましょう。

保護の方法は、

「印刷用tmp」シートを開いた状態で、「ファイル」タブから「情報」の「ブックの保護」クリックで

「現在のシートの保護」を表示します。

furikaetemp004afurikaetemp005a

パスワードは、設定しないでください。

(どうしても設定したい場合は、後で作業するVBAの中で設定解除のVBA記述を行う必要があります。)

これでテンプレートづくりは完了です。

あとは、最後のテスト印刷の時に、微調整する必要があればその時いじる程度かと思います。

3.テンプレート複製VBAコードの組み立て

次は、作成したテンプレートを複製するVBAコードを作成します。

モジュールの挿入

いつものように、新しくModuleを挿入します。

挿入の方法はこちら↓で確認できます。
VBE(ビジュアルベーシックエディター)を起動する

vbavbekidoeyecatch VBA初めての起動。VBEの立ち上げ、保存と終了

テンプレートを複製するVBA

複製するテンプレートのシート名を「印刷用テンプレート」とします。

「印刷用テンプレート」シートが既に存在すれば、一旦それを削除します。

そして新たに複製を末尾に作成します。

新しく挿入したModule1に以下のVBAコードを記述します。

シート保護をしているテンプレートを、複製時に一旦保護解除して、

複製完了後に再度シート保護を有効にします。(パスワードを設定しないで保護しています。)

VBA
Option Explicit

Sub テンプレシート()
    Dim Ws As Worksheet
    Dim Flag As Boolean
        For Each Ws In Worksheets
            If Ws.Name = "印刷用テンプレート" Then
                Flag = True
                Exit For
            End If
        Next Ws
        If Flag = True Then
            Application.DisplayAlerts = False
            Worksheets("印刷用テンプレート").Delete
            Application.DisplayAlerts = True
        End If
        Worksheets("印刷用tmp").Select
        ActiveSheet.Unprotect
        Worksheets("印刷用tmp").Copy after:= _
            Worksheets(Worksheets.Count)
        ActiveSheet.Name = "印刷用テンプレート"
        Worksheets("印刷用tmp").Select
        ActiveSheet.Protect
End Sub
vbadoloopeyecatch VBA 回数不定のループ処理はDo LoopとFor Each vbaifjyokeneyecatch If条件文のVBAコードの組み方。条件の絞り方を最速理解 VBACopyeyecatch シートのコピーを最速に理解!VBAコードで異なる結果 vbanameeyecatch 新規作成ブックとシート。アクティブ状態でやっておくこと

独自テンプレート作成のまとめ

furikaetemp008

このテンプレートを上手く作るかどうかが、既製の振替用紙(払込取扱票)に印字できるかどうかの分かれ目となります。

実際に印字ソフトを動かすときは、このテンプレートを複製して利用しますので、

このシートに対して何度も操作するということはありません。

このテンプレートを安全に保管することが重要になります。

次回はテンプレートに文字・数字を印刷するための「入力シート」と請求先の情報を登録する「発行データ」シートの記入欄を作成していきます。

エクセルVBAを独習を始めた人へ

furikaetemp009

この記事で紹介したテンプレートは、作成についてはかなり細かく面倒な部類です。

エクセルVBAで使うテンプレートは、

  1.   VBAコードでテンプレートを作成する。(テンプレ自体を壊してしまっても何回も再生できる)
  2.   今回のように、手作業でピクセルを計って作成する。(壊さないように保護が必要)

の作成方法があります。

入門的には、面倒でも②の方法が分かり易いかと思いました。

焦らず、徐々に複雑なものにチャレンジしていきましょう。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方
初めてのVBAの勉強、構えなくても気軽に始められる。
vbastudy020a
vbastudy021a

電子書籍版「大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方」をamazonで見てみる

(著者)大村あつし
(出版社)技術評論社
(税込価格)1,628円(本体1,480円+税)

学習書の新しい形です。
YouTubeと完全リンクした参考書です。入門と基礎を重点的に22本の動画で解説をしています。
ちょっとした空き時間を利用してでもスマホがあれば学習ができます。
動画は優しい語り口調で、視聴者にある意味安心感を与えてくれます。動画は5分から20分間ぐらいで22本の構成です。
文章解説と動画解説の関係性は、動画解説が主で、文章解説がサポートいう使い方もできます。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min