メモ帳でデータベースをつくるページに戻る

粗品ページに戻る


最近は、というか、ここ数年は、というか、実はずっと昔から、というか、FAXモデムのついていないパソコンなんてのもあるみたいで、それではではいくらなんでも送信は不可能。
残念ですがこのままお引き取りください(外付けのモデムなんてアホなことは考えないほうがいいです)。

FAXモデムはついているとして、その設定も済んでいるとして、ついでに、ケーブルもすでにつながっているとして

WindowsのおまけでついてくるFAXってのはデフォルトでインストールされているものなのかどうか。
もしまだされていないようならとっとと済ませちゃってください。
インストールされているかどうかは「プリンタ」(「コントロールパネル」→「プリンタ」)を見れば分かります。
そこにFAXが表示されていないならインストールされていないってこと。
「コントロールパネル」→「アプリケーションの追加削除」→「Windowsコンポーネントの追加削除」でFAXサービスを選択。
インストールはあっという間に済みます。

で、Windows2000だったら

Set MyFaxServer = CreateObject("FaxServer.FaxServer")
MyFaxServer.Connect "このPCの名前"
Set MyFaxDoc = MyFaxServer.CreateDocument("FaxDocument")
MyFaxDoc.FileName = "FAXの内容にしたいファイルのフルパス"
MyFaxDoc.FaxNumber = "相手先のFAX番号(ハイフン抜きで数字のみ10個)"
MyFaxDoc.Send
MyFaxServer.Disconnect
Set MyFaxDoc = Nothing
Set MyFaxServer = Nothing



WindowsXPだったら

Set MyFaxServer = CreateObject("FAXCOMEX.FaxServer")
MyFaxServer.Connect "このPCの名前"
Set MyFaxDoc = CreateObject("FAXCOMEX.FaxDocument")
MyFaxDoc.Recipients.Add "相手先のFAX番号"
MyFaxDoc.Body = "FAXの内容にしたいファイルのフルパス"
MyFaxDoc.ConnectedSubmit MyFaxServer
MyFaxServer.Disconnect
Set MyFaxDoc = Nothing
Set MyFaxServer = Nothing

↑をコピーしてメモ帳に貼り付け、"このPCの名前", "相手先のFAX番号", "FAXの内容にしたいファイルのフルパス" を適当にうめて "faxtest.vbs"とか適当な名前で保存(くどいようですが尻尾に必ず.vbsつけて)
このvbsファイルをダブルクリックすれば送信してくれます。
FAXの内容にできるファイルは、txt(メモ帳とか)、bmp(MSペイントとか)、snp(MSAccess)あたり、か。
たしかjpgはダメ(粗品ページ中のソフトではjpgも出来るけどあっちはべつな仕込みをしてるんで)
他はためしたことがないので分かりません。
bmpについては、この拡張子がMSペイントに関連付けられている場合、544 X 826pixelを超えると複数ページに分割されます(544,826という数字が正確かどうかは何とも。大体そんなもんだと思う)
このサイズが何を意味するのかは、MSペイントというアプリの不思議に頑固な性質を注意深く観察すると何となく理解できます(こっちのページの下のほうにちょっとだけ解説)

xls(Excel), doc(Wordとか), htmlあたりも、その気になれば出来るんですが、ひと手間ふた手間ぐらい余計にかかります(根性がある人はこのあたりを参考に)

さて。
これで送信できますとかいっても、一体どこが便利なんだという感じで。
そもそもPCの名前だのファイルのフルパスだの、そんなもの入力させる不親切なソフトは見たことがない。
せめてファイルDragDropでいけるようにしなきゃ。

というわけで↓のコード。ひまだったらこれでvbsファイルつくって実験してみてください。

Option Explicit

Dim MyArgs
Dim MyStrFile, MyStrFaxNum, MyStrWinVer, MyStrPC
Dim MyFaxServer, MyFaxDoc

On Error Resume Next

Set MyArgs = WScript.Arguments
MyStrFile = MyArgs(0)
Set MyArgs = Nothing
'DragDropされたファイルのフルパスを取得

If MyStrFile = "" Then
    MsgBox "何かファイルをDragDropしろって", vbOKOnly, "ダブルクリックじゃなく"
    WScript.Quit
End If

MyStrFaxNum = InputBox("相手先のFAX番号")
If MyStrFaxNum = "" Then
    WScript.Quit
End If

'Windowsのバージョンと、「このPCの名前」を取得
MyStrWinVer = CreateObject("Wscript.Shell").RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
MyStrPC = CreateObject("WScript.Network").ComputerName

If MyStrWinVer = "5.0" Then
    'Windows2000の場合
    Set MyFaxServer = CreateObject("FaxServer.FaxServer")
    MyFaxServer.Connect MyStrPC
    Set MyFaxDoc = MyFaxServer.CreateDocument("FaxDocument")
    MyFaxDoc.FileName = MyStrFile
    MyFaxDoc.FaxNumber = MyStrFaxNum
    MyFaxDoc.Send
    MyFaxServer.Disconnect
Else
    '2000以外の場合(といってもXP以外はどうなるか知らない)
    Set MyFaxServer = CreateObject("FAXCOMEX.FaxServer")
    MyFaxServer.Connect MyStrPC
    Set MyFaxDoc = CreateObject("FAXCOMEX.FaxDocument")
    MyFaxDoc.Recipients.Add MyStrFaxNum
    MyFaxDoc.Body = MyStrFile
    MyFaxDoc.ConnectedSubmit MyFaxServer
    MyFaxServer.Disconnect
End If
Set MyFaxDoc = Nothing
Set MyFaxServer = Nothing

これで少しは便利になった感じがしませんかね。
いや、ダメなのはわかってます。
番号を入力させるなんて冗談じゃないですよね。
番号なんてのはあらかじめ入力されてて、あとは選ぶだけ、じゃないと。
要は間違った番号入れたらどうするのって話でしょ。
上のコードから
MyStrFaxNum = InputBox("相手先のFAX番号")
If MyStrFaxNum = "" Then
    WScript.Quit
End If
を削って、
MyStrFaxNumのかわりに"0123456789" 番号そのものを入れちゃう、なんて手もあります。
で、青木商事.vbsとかいうファイル名前で保存。
同じように井上工務店.vbs、宇田川機器.vbs・・・
番号打つかわりに、相手先の名前のvbsファイルに送りたいファイルをDragDropすればそのまま送信開始。
いまどきFAX送る相手なんてそんなに何百件もないでしょ(んなこともないと思うぞ)
はいはい、ダメです。
私が悪うございました。
(でもやっぱりこのアイディア捨てがたいのでちょっと発展させてみた)



MSExcelかMSAccessあたりと組み合わせれば、もう少しましなものができると思います。
FAX送信部分のコードはそのままMSOfficeのVBA中でも通用するはずなんで(→)
ただVBA(たぶんふつうのVBも)使ってる人は、こんな雑な書き方はしないのかもしれない。

Dim MyFaxServer As FAXCOMEXLib.FaxServer
Dim MyFaxDoc As FAXCOMEXLib.FaxDocument

Set MyFaxServer = New FAXCOMEXLib.FaxServer
MyFaxServer.Connect "PCの名前"
Set MyFaxDoc = New FAXCOMEXLib.FaxDocument
MyFaxDoc.Recipients.Add "FAX番号"
MyFaxDoc.Body = "ファイルのフルパス"
MyFaxDoc.ConnectedSubmit(MyFaxServer) 'ここ、自信ねーな。MyFaxDoc.ConnectedSubmit MyFaxServer かも
MyFaxServer.Disconnect
Set MyFaxDoc = Nothing
Set MyFaxServer = Nothing

↑VBやVBAのまともな書き方ってのはこんな感じかだったかな。
そいでもって、たしか何だったか参照設定が必要になるんですよ。
ちなみにこの書き方、VBSでは通用しないので注意。
(FAXCOMEX.FaxServer ←→ FAXCOMEXLib.FaxServer どうでもいいけどこの微妙な違いが何かムカつく)










-