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 Type Library を参照しています。繰り返しますが、このコードは 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 に答える