0

我需要将我的 Access 2007 项目移动到 Access 2010。除了我拥有的这一点 VBA 代码之外,大部分覆盖工作都很好。

这个特殊的 VBA 代码从 PDF 表单加载值,然后将这些值分配给表单控件。这允许用户手动输入他们的数据,或者让其他人(无法访问托管 Access DB 的网络)填写表格并让其他人为他们导入表格。

当我运行代码时,它会在 Access 2010 中挂起以下代码:

If Title <> "" Then
        Me!Title = Title 
End If

我得到的错误信息是:

运行时错误“2448”:

你不能给这个对象赋值。

如果有帮助,这里还有一些背景代码:

Dim AcroApp As Acrobat.CAcroApp
    Dim theForm As Acrobat.CAcroPDDoc
    Dim jso As Object
    'Declare variables by Tab used in Form view
    'Tab 1
    Dim Title, First_Name, Middle_Name, Last_Name, Maiden_Name As String

...

'Form Load
    Set AcroApp = CreateObject("AcroExch.App")
    Set theForm = CreateObject("AcroExch.PDDoc")
    theForm.Open (FileName.Value)
    Set jso = theForm.GetJSObject

...

'Tab 1 Data Load
    Title = jso.getField("Title").Value

...

'Data Display
    MsgBox "Values read from PDF:" & vbCrLf & vbCrLf & "Title:" & Title & vbCrLf & _

...

        'Tab 1 Data Populate
    If Title <> "" Then
        Me!Title = Title
    End If

在上面的代码中,我在表单中的值正确显示在消息框中。所以我知道变量正在填充正确的值。此外,我在 VBA 编辑器中引用了 Adob​​e Acrobat 10.0 类型库。同样,此代码在 Access 2007 下运行良好。

谢谢你的帮助。

4

1 回答 1

1

错误消息告诉您无法将任何内容分配给Me!Title. 在这种情况下,Me!Title是只读的。

但什么是Me!Title?在调试模式下,查看“立即”窗口中的内容:

Debug.Print TypeName(Me!Title)

同样在调试模式下,确认您无法将字符串值分配给Me!Title

Me!Title = "foo"

似乎您有不止一个东西叫做“标题”。你Dim一个变体标题。还有Me!Title……也许是其他人?

给它们起不同的名称可能有助于避免混淆。例如,如果Me!Title是一个文本框,您可以将其重命名为txtTitle. 您可以将变体变量命名为varTitle.

我认为您还应该检查对象浏览器和/或联机帮助,以查看 Access 2010 对象模型是否包含任何Title可能会干扰此处的命名内容。

于 2012-09-19T18:20:31.173 回答