Yot*_*tam 5 ms-access wia vba scanning
我正在编写Microsoft Access应用程序,并且希望使用户能够将多个页面扫描为单个PDF格式。一旦我扫描了所有页面,即可转换为PDF。这是我的代码:
Option Compare Database
Option Explicit
Const WIA_FORMAT_JPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
Public Function MyScan()
Dim ComDialog As WIA.CommonDialog
Dim DevMgr As WIA.DeviceManager
Dim DevInfo As WIA.DeviceInfo
Dim dev As WIA.Device
Dim img As WIA.ImageFile
Dim i As Integer
Dim wiaScanner As WIA.Device
Set ComDialog = New WIA.CommonDialog
Set wiaScanner = ComDialog.ShowSelectDevice(WiaDeviceType.UnspecifiedDeviceType, False, True)
Set DevMgr = New WIA.DeviceManager
For i = 1 To DevMgr.DeviceInfos().Count
If DevMgr.DeviceInfos(i).DeviceID = wiaScanner.DeviceID Then
Set DevInfo = DevMgr.DeviceInfos(i)
End If
Next i
Set dev = DevInfo.Connect
Set img = dev.Items(1).Transfer(WIA_FORMAT_JPEG)
img.SaveFile "C:\img.jpg"
Set img = Nothing
Set dev = Nothing
Set DevInfo = Nothing
Set DevMgr = Nothing
Set ComDialog = Nothing
End Function
Run Code Online (Sandbox Code Playgroud)
当然,重要的是要说我的扫描仪是具有自动文档进纸器的Avision AV121。
我的问题是Set img = dev.Items(1).Transfer(WIA_FORMAT_JPEG)
一次扫描所有页面(而不仅仅是单个页面),但是我只看到图像文件中的第一个页面。因为所有页面都被一次扫描,所以我不能循环执行-在第二次迭代中会引发错误(说进纸器实际上是空的),而我仍然只扫描了第一页。
我想指出,这似乎是一个普遍的问题。我已经阅读了很多有关此问题的主题,但没有找到任何答案。
我希望能在这里找到帮助,我真的很沮丧。
非常感谢