私の職場では今だにFAXが主流です。
履歴管理のしづらいFAXは早くやめたいところですが、取引先がメールではなくFAXで送って欲しいと言ってきたり、紙で管理しないと抜けが発生するだとか、いろんな理由でFAXから抜け出せないので日々のFAXを自動送信する方法を考えてみました。
適当に作ったので参考までに。。
自動でFAX送信する方法
方法としては、以下の操作を繰り返す感じにしました。
- PDFファイルを指定して印刷コマンドを実行し、FAX送信画面を表示。
- RPA(マクロ操作等)でFAX送信画面にFAX番号を入力し、送信ボタンを押す。
今回はVBSとUWSCを使用し、実現しています。
前提条件
・事前に利用するFAXの「FAXドライバ」をインストールしていること
・「通常使うプリンタ」を使用したいFAXの「FAXドライバ」にする
・送信ファイルは「FAX_(FAX番号)_~.pdf」のようなファイル名であること
・UWSC等のマクロ・RPAを準備する
・Acrobat Readerをインストールしていること
今回のファイル構成
.\uwsc5302\FAX送信.uws
.\uwsc5302\UWSC.exe
.\01_送信
.\02_送信済み
.\FAX自動送信.vbs
実行ファイル
手っ取り早くVBSで作りました。
①対象フォルダ内のファイルを取得
②ファイル名を判定
③FAX送信画面を呼び出す
④UWSCで画面操作を行う
⑤送信済みフォルダに移す
という流れです。念のため、FAX送信画面呼び出しと送信後にウエイトを入れています。
FAX送信用ファイルは「.\01_送信」フォルダ内の頭4文字が「FAX_」後ろ4文字が「.pdf」のファイルを対象とし、「_」区切りで2項目目をFAX番号としてUWSCに渡して処理しています。処理後は「.\02_送信済み」フォルダへ移すようにしています。
Acrobat Readerのコマンドラインオプションを使用していますが、アップデートが入ると不安定になる恐れがあるので、更新を無効にすると良いかもしれません。また、Acrobat Readerが起動したままになるので別途終了が必要かも。Acrobat Reader以外ののアプリで実行でFAX送信画面を開けるならそちらで実行するのもおすすめ。
FAX自動送信.vbs
Option Explicit
' ******************
' 初期設定
' ******************
Dim objShell
Dim fso
Dim objFolder '対象フォルダ
Dim objFile '対象ファイル
Dim split_result
' ******************
' 初期処理
' ******************
'オブジェクト定義
Set objShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
' ******************
' 本処理
' ******************
'対象フォルダ指定
Set objFolder = fso.GetFolder(".\01_送信")
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
if left(objFile.Name,4) = "FAX_" then
if right(objFile.Name,4) = ".pdf" then
split_result = split(objFile.Name,"_")
objShell.Run "Acrobat.exe /p /h " & """" & objFile & """", 1, FALSE
WScript.Sleep 3000
objShell.Run ".\uwsc5302\UWSC.exe .\uwsc5302\FAX送信.uws " & split_result(1), 1, True
WScript.Sleep 2000
fso.MoveFile objFile, ".\02_送信済み\"
end if
end if
Next
' ******************
' 終了処理
' ******************
Set objFolder = Nothing
Set fso = Nothing
FAX送信画面自動操作
今回使用するFAXドライバは富士フィルムです。FAX送信画面は以下のような感じ。
※使用するFAX機器のドライバによって画面レイアウトが異なるため注意してください。
FAX番号はVBSから引数取得し、画面に「FAX番号」と「名前」を入力。「一覧に追加」をクリックしたあとで「送信開始」をクリックしFAX送信します。
FAX送信.uws
// *****************************************************
// FAX送信
// *****************************************************
NAME = "MONO-LOG"
NUMBER = PARAM_STR[0]
// ******************************
// 画面判定
// ******************************
ID = GETID("ファクス送信の設定","#32770")
// ******************************
// 画面入力
// ******************************
SENDSTR(ID, NUMBER, 3 , True)
SENDSTR(ID, NAME, 4, True)
CLKITEM(ID, "一覧に追加", CLK_BTN)
CLKITEM(ID, "送信開始", CLK_BTN)
VBSもUWSCも開発が止まって今後いつ使えなくなるかわからないので、VBSはVBAかpowershell、UWSCはAutoItやRPAなどに置き換えたほうが良いかもしれません。