Ms access VBA编译错误:创建Com对象时应为语句结尾

Ms access VBA编译错误:创建Com对象时应为语句结尾,ms-access,vba,Ms Access,Vba,我试图创建一个类的对象,但vba抛出语法错误 Private Sub cmd_run_Click() 'process ocr on table Dim OCRz As Tesseract Set OCRz = New Tesseract OCRz.Init("C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly)

我试图创建一个类的对象,但vba抛出语法错误

Private Sub cmd_run_Click()
 'process ocr on table
  Dim OCRz As Tesseract

  Set OCRz = New Tesseract

  OCRz.Init("C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly)

  MsgBox "processing"

 'display results
  Me.Requery
End Sub

试试:

OCRz.Init "C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly
或:


您只需添加一个
呼叫

Call OCRz.Init("C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly)
你的错误应该消失了


这是在

中解释的。我自己在尝试了几个小时后找到了解决方案,不幸的是,我不得不以艰苦的方式学习

首先,我需要通过设置C#项目属性生成一个COM

  • 应用程序=>程序集信息=>需要选中“使程序集COM可见”
  • Build=>在Output=>下需要检查Comp互操作的寄存器
  • 其次,我确实需要注册为Tesseract生成的dll,方法如下

    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe C:\Windows\SysWOW64\Emgu.CV.OCR.dll/codebase/tlb:C:\Windows\SysWOW64\Emgu.CV.OCR.tlb

    现在在excel中,我需要实例化tesseract对象,如下所示

    Private Sub cmd_run_Click()
       'process ocr on table
        Dim OCRz As New Tesseract("C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly)
    
        MsgBox "processing"
    
       'display results
        Me.Requery
    End Sub
    

    我不知道,但诀窍是在同一点声明并实例化Tesseract对象。

    可能只是
    Set OCRz=New Tesseract
    ,然后
    OCRz.Something(“C:\\Users\\aftab\\Downloads\\ocr\\ocr\\Tesseract\\tesseradata”,“eng”,OcrEngineMode.OcrEngineMode\u tesseractoly)
    ,我不知道应该使用什么命令来替换
    某些东西,我没有在Tesseract上看到VBA的文档…我有这个方法OCRz.Init(“C:\\Users\\aftab\\Downloads\\ocr\\ocr\\Tesseract\\tesserata”,“eng”,OcrEngineMode.OcrEngineMode\u tesseractorOnly)它接受三个参数,但现在编译错误被更改,请求=signI没有我说过的doc,但是这个方法可能会返回一些东西,如果没有,就去掉括号,在
    init
    和parameters@GSerg:你什么都知道还是你碰巧在Tesseract维基上找到了这个文件?
    Private Sub cmd_run_Click()
       'process ocr on table
        Dim OCRz As New Tesseract("C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly)
    
        MsgBox "processing"
    
       'display results
        Me.Requery
    End Sub