使用VBA使用ADF扫描仪扫描多个页面

我正在编写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的限制,我认为这是一个错误.也许只在某些情况下.

我的解决方案是使用第三方扫描控件.

点赞