VBA编译错误:语句的预期结束创建Com对象时

时间:2017-02-01 11:40:03

标签: vba ms-access 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)

  MsgBox "processing"

 'display results
  Me.Requery
End Sub

Eror being shown on red

3 个答案:

答案 0 :(得分:0)

尝试:

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

或:

Dim Result As Variant
Result = OCRz.Init("C:\\Users\\aftab\\Downloads\\ocr\\ocr\\tesseract\\tessdata", "eng", OcrEngineMode.OcrEngineMode_TesseractOnly)

答案 1 :(得分:0)

您只需添加Call

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

你的错误应该消失了

MSDN Call Documentation

中对此进行了解释

答案 2 :(得分:0)

我在尝试了几个小时之后自己找到了解决方案,不幸的是我不得不努力学习。

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

  1. 应用程序=>装配信息=>需要检查Make assembly COM-Visible
  2. Build =>在Output =>下需要查看注册Comp Interop
  3. 其次,我需要按照

    注册为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对象实例化为以下

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="@color/colorBackgroundDark">
    
    <TextView
        android:id="@+id/textViewAssessmentTypeName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="left"
        android:paddingLeft="16dp"
        android:textColor="@color/colorPrimaryText" />
    
    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#8000FF00" />
    </RelativeLayout>
    

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