我正在编写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
当然,重要的是要说我的扫描仪是带有自动文档进纸器的Avision AV121.
我的问题是Set img = dev.Items(1).Transfer(WIA_FORMAT_JPEG)一次扫描所有页面(而不仅仅是单个页面),但我只看到图像文件中的第一个页面.因为所有的页面都是一次扫描的,所以我不能在循环中完成 – 在第二次迭代中会出现错误(说送料器实际上是空的)并且我仍然只扫描了第一页.
我想说这似乎是一个普遍的问题.我已经阅读了很多关于这个问题的线索,但没有找到任何回答我问题的东西.
我希望在这里找到帮助,我真的很沮丧.
非常感谢
最佳答案 我自己有这个问题.
我不记得我发现这可能是WIA的限制,我认为这是一个错误.也许只在某些情况下.
我的解决方案是使用第三方扫描控件.