- 「設定」を開く: スタートボタンをクリックし、「設定」を選択します。
- 「アプリ」を選択: 左側のメニューから「アプリ」を選び、「オプション機能」をクリックします。
- 「機能の追加」をクリック: 「機能の追加」をクリックし、検索フィルタに「FAX」と入力します。
- 「Windows FAXとスキャン」をインストール: 「Windows FAXとスキャン」を見つけてチェックを入れ、「次へ」をクリックしてインストールを行います12。
注意FAXモデムがUSB3未対応のものあり
USB3対応
StarTech.com USB Faxモデム
US Robotics 56K USB Soft Modem (USR5639)
Micro Research MD30
ExcelからPDF返還後にFAX送信
主なFAXジョブステータスジョブのステータスが不明fsPending
:ジョブがキューに入っており、送信を待fsInProgress
:ジョブが現在送信中。fsPaused
:ジョブが一時停止。手動で再開する必要があります。fsRetrying
:送信が失敗し、再試行を行っている状態です。fsCompleted
:ジョブが正常に完了した。fsFailed
:ジョブが失敗したことを示します。エラーの詳細を確認する必要があります。fsCanceled
:ジョブがキャンセル。fsUnknown
:ジョブのステータスが不明であることを示します。
excelを起動し、PDF返還後に出力のソース
Imports FAXCOMLib
Imports Microsoft.Office.Interop.Excel
Module Module1
Sub Main()
' Excelアプリケーションを起動
Dim excelApp As New Application
Dim workbook As Workbook = excelApp.Workbooks.Open("C:\path\to\your\document.xlsx")
workbook.SaveAs("C:\path\to\your\document.pdf", XlFileFormat.xlPDF)
workbook.Close()
excelApp.Quit()
' FAXサーバーオブジェクトを作成
Dim faxServer As New FAXServer
faxServer.Connect("")
' FAXドキュメントオブジェクトを作成
Dim faxDoc As FAXDocument = faxServer.CreateDocument("C:\path\to\your\document.pdf")
' 送信先のFAX番号を設定
faxDoc.Recipients.Add("1234567890", "Recipient Name")
' 送信を試行
Dim jobID As Object
Dim maxRetries As Integer = 3
Dim retries As Integer = 0
Dim success As Boolean = False
While retries < maxRetries AndAlso Not success
Try
jobID = faxDoc.Submit("")
Console.WriteLine("FAX送信成功: ジョブID " & jobID.ToString())
' ジョブのステータスを確認
Dim jobStatus As FAXJobStatus = faxServer.GetJobStatus(jobID)
Console.WriteLine("ジョブステータス: " & jobStatus.Status.ToString())
' ステータスに応じた処理
Select Case jobStatus.Status
Case FAX_JOB_STATUS_ENUM.fjsInProgress
Console.WriteLine("送信中...")
Case FAX_JOB_STATUS_ENUM.fjsCompleted
Console.WriteLine("送信完了")
success = True
Case FAX_JOB_STATUS_ENUM.fjsFailed
Console.WriteLine("送信失敗")
Case FAX_JOB_STATUS_ENUM.fjsRetrying
Console.WriteLine("再試行中...")
Case Else
Console.WriteLine("その他のステータス: " & jobStatus.Status.ToString())
End Select
Catch ex As Exception
If ex.Message.Contains("話し中") Then
Console.WriteLine("送信先が話し中です。再試行します...")
retries += 1
Threading.Thread.Sleep(5000) ' 5秒待機して再試行
Else
Console.WriteLine("FAX送信エラー: " & ex.Message)
Exit While
End If
End Try
End While
If Not success Then
Console.WriteLine("FAX送信に失敗しました。最大再試行回数に達しました。")
End If
' 接続を閉じる
faxServer.Disconnect()
End Sub
End Module
printoDocmentで使用
Imports System.Drawing
Imports System.Drawing.Printing
Imports FAXCOMLib
Module Module1
Private printFont As Font
Private streamToPrint As IO.StreamReader
Sub Main()
' 印刷するテキストファイルを開く
streamToPrint = New IO.StreamReader("C:\path\to\your\document.txt")
Try
printFont = New Font("Arial", 10)
Dim pd As New PrintDocument()
AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
pd.Print()
Finally
streamToPrint.Close()
End Try
' FAX送信
SendFax("C:\path\to\your\document.txt")
End Sub
Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim linesPerPage As Single = 0
Dim yPos As Single = 0
Dim count As Integer = 0
Dim leftMargin As Single = ev.MarginBounds.Left
Dim topMargin As Single = ev.MarginBounds.Top
Dim line As String = Nothing
' ページあたりの行数を計算
linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
' 各行を印刷
While count < linesPerPage AndAlso ((line = streamToPrint.ReadLine()) IsNot Nothing)
yPos = topMargin + (count * printFont.GetHeight(ev.Graphics))
ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
count += 1
End While
' 追加のページがあるかどうかを確認
If line IsNot Nothing Then
ev.HasMorePages = True
Else
ev.HasMorePages = False
End If
End Sub
Private Sub SendFax(ByVal filePath As String)
Dim faxServer As New FAXServer
faxServer.Connect("")
Dim faxDoc As FAXDocument = faxServer.CreateDocument(filePath)
faxDoc.Recipients.Add("1234567890", "Recipient Name")
Dim jobID As Object
Dim maxRetries As Integer = 3
Dim retries As Integer = 0
Dim success As Boolean = False
While retries < maxRetries AndAlso Not success
Try
jobID = faxDoc.Submit("")
Console.WriteLine("FAX送信成功: ジョブID " & jobID.ToString())
Dim jobStatus As FAXJobStatus = faxServer.GetJobStatus(jobID)
Console.WriteLine("ジョブステータス: " & jobStatus.Status.ToString())
Select Case jobStatus.Status
Case FAX_JOB_STATUS_ENUM.fjsInProgress
Console.WriteLine("送信中...")
Case FAX_JOB_STATUS_ENUM.fjsCompleted
Console.WriteLine("送信完了")
success = True
Case FAX_JOB_STATUS_ENUM.fjsFailed
Console.WriteLine("送信失敗")
Case FAX_JOB_STATUS_ENUM.fjsRetrying
Console.WriteLine("再試行中...")
Case Else
Console.WriteLine("その他のステータス: " & jobStatus.Status.ToString())
End Select
Catch ex As Exception
If ex.Message.Contains("話し中") Then
Console.WriteLine("送信先が話し中です。再試行します...")
retries += 1
Threading.Thread.Sleep(5000) ' 5秒待機して再試行
Else
Console.WriteLine("FAX送信エラー: " & ex.Message)
Exit While
End If
End Try
End While
If Not success Then
Console.WriteLine("FAX送信に失敗しました。最大再試行回数に達しました。")
End If
faxServer.Disconnect()
End Sub
End Module