我需要将Access 2007项目移动到Access 2010.除了我的VBA代码之外,大部分内容都工作得很好。
此特定VBA代码从PDF表单加载值,然后将这些值分配给表单控件。这允许用户手动输入他们的数据,或者让其他人(他们无法访问托管Access数据库的网络)填写表单并让某人为他们导入。
当我运行代码时,它会在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编辑器中引用了Adobe Acrobat 10.0类型库。同样,这个代码在Access 2007下运行得很好。
感谢您的帮助。
答案 0 :(得分: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
的任何内容。