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

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)一次扫描所有页面(而不仅仅是单个页面),但是我只看到图像文件中的第一个页面。因为所有页面都被一次扫描,所以我不能循环执行-在第二次迭代中会引发错误(说进纸器实际上是空的),而我仍然只扫描了第一页。

我想指出,这似乎是一个普遍的问题。我已经阅读了很多有关此问题的主题,但没有找到任何答案。

我希望能在这里找到帮助,我真的很沮丧。

非常感谢

E M*_*ett 0

我自己也遇到过这个问题。

我不记得在哪里发现这可能是 WIA 的限制,我认为是一个错误。也许只是在某些情况下。

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