Mac って何?それって美味しいの?

マイコンと呼ばれた時代から現在まで、使用記から何から何でも。

【Airペイ】【楽天ペイ】A4プリンタでクレジットカード利用票を自動印刷

Airペイ と 楽天ペイ 、重複して契約は大丈夫?
普段はジャマな「チャットで問い合わせ」してみたら問題ないとのことで、
Airペイ」に続き「楽天ペイ」での決済もできるようにした。

f:id:yummac:20190718180253j:plain

クレジットカード利用票

色違いの決済端末が2台並ぶ。

【Airペイ】A4プリンタでクレジットカード利用票を自動印刷

でやったように、楽天ペイのクレジットカード利用票(ご利用控え)も対応しよう!

 

概要

カード決済完了時、決済端末から印刷用に用意したメールアドレスに「利用票メール」を送信すると、PCに接続されたプリンタ(A4インクジェット利用)から、「クレジットカード利用票」がA6用紙で出力される。

 

変更点

楽天ペイ用の利用票印刷サブルーチンを追加
楽天ペイ用の仕訳ルールを追加
・テストや再印刷のため、仕訳ルール実行機能を作成

 

VBコード

Airペイ利用票印刷サブルーチン


Public Sub PrintMailBody(ByRef Item As Outlook.MailItem)
  On Error GoTo Err_PrintMailBody
  'Airペイ利用票印刷サブルーチン

  '利用票メールから本文を抜き出しワードで印刷(テンプレート使用)
  Dim ExtText As String
  Dim StaText As String
  Dim EndText As String
  Dim StaPos As Integer
  Dim EndPos As Integer
    
  '利用票メール文中の必要な部分の始まりと終わりを指定
  StaText = String(5, "=")
  EndText = String(20, "=")
  
  StaPos = InStr(Item.Body, StaText)
  EndPos = InStr(Item.Body, EndText)
  
  '利用票メールの内容を部分的にカスタマイズ
  ExtText = Replace(Mid(Item.Body, StaPos, EndPos - StaPos), "このメールを", "この利用票を")
  
  Const wdDoNotSaveChanges = 0
  With CreateObject("Word.Application")
    .Visible = False
'現行プリンタ名を調べ、出力プリンタを指定する(現行プリンタを変更しない)
'    MsgBox .activeprinter
    .WordBasic.FilePrintSetup Printer:="PX-105 Series(ネットワーク)", DoNotSetAsSysDefault:=1
'利用票テンプレートをフルパスで指定
    With .Documents.Add("C:\Users\xxxxx\Documents\Office のカスタム テンプレート\クレジットカードご利用票.dot")
      .Content.InsertAfter Text:=ExtText
      .PrintOut False
      .Close wdDoNotSaveChanges
    End With
    .Quit wdDoNotSaveChanges
  End With
  
Exit_PrintMailBody:
  Exit Sub
  
Err_PrintMailBody:
  MsgBox Err.Description
  Resume Exit_PrintMailBody
  
End Sub

楽天ペイ利用票印刷サブルーチン


Public Sub PrintMailBody_RPay(ByRef Item As Outlook.MailItem)
  On Error GoTo Err_PrintMailBody_RPay
  '楽天ペイ利用票印刷サブルーチン

  '利用票メールから本文を抜き出しワードで印刷(テンプレート使用)
  Dim ExtText As String
  Dim StaText As String
  Dim EndText As String
  Dim StaPos As Integer
  Dim EndPos As Integer
    
  '利用票メール文中の必要な部分の始まりと終わりを指定
  StaText = "ご利用明細"
  EndText = "お支払いは、各カード会社が発行するご利用代金明細書でご確認ください。"
  
  StaPos = InStr(Item.Body, StaText)
  EndPos = InStr(Item.Body, EndText) + Len(EndText)
  
  '利用票メールの内容を部分的にカスタマイズ
  ExtText = Replace(Mid(Item.Body, StaPos, EndPos - StaPos), "このメール", "この利用票")
  ExtText = Replace(ExtText, "<https://smartpay.rakuten.co.jp/img/mailmagazine/common/email/spacer.gif>", "")
  ExtText = Replace(ExtText, vbTab, "")
  '余分なスペース2+CRLFを消す
  ExtText = Replace(ExtText, "  " + vbCr + vbLf + "  ", "")
  
  Const wdDoNotSaveChanges = 0
  With CreateObject("Word.Application")
    .Visible = False
'現行プリンタ名を調べ、出力プリンタを指定する(現行プリンタを変更しない)
'    MsgBox .activeprinter
    .WordBasic.FilePrintSetup Printer:="PX-105 Series(ネットワーク)", DoNotSetAsSysDefault:=1
'利用票テンプレートをフルパスで指定
    With .Documents.Add("C:\Users\xxxxx\Documents\Office のカスタム テンプレート\クレジットカードご利用票.dot")
      .Content.InsertAfter Text:=ExtText
      .PrintOut False
      .Close wdDoNotSaveChanges
    End With
    .Quit wdDoNotSaveChanges
  End With
  
Exit_PrintMailBody_RPay:
  Exit Sub
  
Err_PrintMailBody_RPay:
  MsgBox Err.Description
  Resume Exit_PrintMailBody_RPay
  
End Sub

 

テストや再印刷のために、手動で実行するサブルーチンを作成
印刷したい利用票メールの「開封済み」を「未読」に変更してから実行する


Public Sub RunPrintRule()
    '利用票印刷ルールを手動で実行
    Dim colRules As Outlook.Rules
    Dim oRule As Outlook.Rule
    Dim oInbox As Outlook.Folder
    Dim oStore As Outlook.Store

    '利用票メールアドレスを設定
    Set oStore = Application.Session.Stores.Item("xxxxx@xxxxx.com")

    'Specify target folder for rule move action
    Set oInbox = oStore.GetDefaultFolder(olFolderInbox)
    
    'Get Rules from Session.DefaultStore object
    Set colRules = oStore.GetRules()
    
    'Create the rule by adding a Receive Rule to Rules collection
    'Airペイの仕訳ルール実行(未読メール対象)
    Set oRule = colRules.Item("クレジットカード利用票印刷")
    oRule.Execute True, oInbox, False, olRuleExecuteUnreadMessages
    
    '楽天ペイの仕訳ルール実行(未読メール対象)
    Set oRule = colRules.Item("クレジットカード利用票印刷RPay")
    oRule.Execute True, oInbox, False, olRuleExecuteUnreadMessages

End Sub

ホームバー(リボン)に手動で実行するボタンを配置すると便利

f:id:yummac:20190718141534j:plain

ホームバー

 

仕分けルール(例)

f:id:yummac:20190718132828j:plain

Airペイ

f:id:yummac:20190718164321j:plain

楽天ペイ