HP Scanjet Enterprise Flow 7500スキャナーから文書をスキャンするために作成されたMS Access 2013でマクロを実行し、その結果をPDFとして保存し、組織内の他の人に自動的に電子メールで送信します。アクセスVBAが遅いWIA
マクロ自体は実行する必要がありますが、スキャナに付属のHPソフトウェアと比較すると、マクロのスキャン部分の処理に時間がかかります。 HPソフトウェアでは、23ページをスキャンする時間は約30秒でした。マクロでは、その時に約3〜4枚のシートがスキャンされました。スキャナを制御するために使用しているコードを以下で見つけてください。実行速度を向上させるために改善または変更できるものは誰にでも見えますか?
Const WIA_FORMAT_JPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
Private Sub cmdOK_Click()
Dim intPages As Integer 'number of pages
Dim img As wia.ImageFile
Dim strPath As String
Dim strPathImg As String
Dim strFileJPG As String
Dim txt_id As String
Dim strRPTScan As String
strPath = "H:\Scan\" 'set path to save files
strPathImg = "H:\Scan\Images\"
intPages = 1
On Error GoTo ErrorHandler
'scan
ScanStart:
Dim DialogScan As New wia.CommonDialog
Dim DPI As Integer
Dim PP As Integer
Dim l As Integer
Dim Scanner As wia.Device
Dim intVerticalExtent As Integer
Dim intOneTwoSided As Integer
Set Scanner = DialogScan.ShowSelectDevice(wia.WiaDeviceType.ScannerDeviceType, False, False)
'Set page length
Select Case fraPaperFormat
Case 1
intVerticalExtent = 1650
strRPTScan = "rptScan11"
Case 2
intVerticalExtent = 2100
strRPTScan = "rptScan14"
End Select
'Set single or two-sided scanning
Select Case fraSingleTwoSided
Case 1
intOneTwoSided = 1
Case 2
intOneTwoSided = 5
End Select
'Set scanner properties depending on userform letter format values
With Scanner
.Properties("3088").Value = intOneTwoSided 'determined above
.Items(1).Properties("Horizontal Resolution").Value = 150
.Items(1).Properties("Vertical Resolution").Value = 150
.Items(1).Properties("6149").Value = 0 'x point to start scan
.Items(1).Properties("6150").Value = 0 'y point to start scan
.Items(1).Properties("Horizontal Extent").Value = 1275
.Items(1).Properties("Vertical Extent").Value = intVerticalExtent 'determined above
End With
'Start Scan if err number -2145320957 Scan document finish
Do While Err.Number <> -2145320957 'error number is ADF status don't feed document
On Error GoTo here
Set img = Scanner.Items(1).Transfer(WIA_FORMAT_JPEG)
strFileJPG = strPathImg & CStr(intPages) & ".jpg"
img.SaveFile (strFileJPG) 'save files .jpg in temp folder
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into scantemp (picture) values ('" & strFileJPG & "')" 'insert picture temp to table scan temp
intPages = intPages + 1 'add number pages
here:
Loop
'after finish scan start convert to pdf
助けてください。
私はそれができないと思っていましたが、私はちょうどその場合に尋ねると思いました。私はこれらの新しい提案にあなたの研究をさらに進めていきます。助けてくれてありがとう。 – viRg