2009-06-26 16 views
2

Access.Applicationオブジェクトを使用することはできません。、これは動作しません

Sub X() 
    Dim A As Access.Application 
    Set A = CreateObject("Access.Application") 
    'Do Stuff 
End Sub 

しかし、これが作業を行います。

Sub X() 
    Dim A As Object 
    Set A = CreateObject("Access.Application") 
    'Do Stuff 
End Sub 

私は、彼らはほぼ同じことを行う知っているが、誰もが言うことができます私はどのようにaccess.applicationオブジェクトを作るのですか?私はCrystal Reports 11を持っていると付け加えておいてください。最後のアップグレードでは、いくつかのVBA DLLが「登録解除」されている可能性があります。

(2009-06-29更新)

最初の2つの質問を受けて、私は& Excelファイルいくつかの他のアクセスを制御するためのMS Access VBAを使用しています。これはローカルマシン上でのみ実行されるため、常にAccessがインストールされることを保証できます。私は "Microsoft Access 11.0 Object Library"(MSACC.OLB)も参照しています。

私はこれを回避する方法があることを知っています。つまり、コードを書くときに早期バインディングを使用し、実行時に後でバインディングに切り替えると、なぜ私のマシン上で早期バインディング方法が全く機能しないのか理解できません、コードは正常にAccessを持つ別のマシンで動作します)。

答えて

1

こんにちは、
あなたが言うコードは有効ではありません。あなたはどんなエラーを出していますか?それはいつ起こるのですか?あなたはコードの行を知っていますか?ただ、サイドノートとして、これは同様に法的な構文である

Dim accApp As Access.Application 
    Set accApp = New Access.Application 

しかし、明確にするために、CreateObjectのシンタックスは、問題の原因合法ではありません。

+0

(オリジナルポスターはこちら)私は、createobjectメソッドまたは新しいaccess.applicationメソッドのいずれかを試してみると、 "DLLを読み込む際にエラーが発生しました"というメッセージが表示されます。 (ああ、私はAccessでVBAを使用しています)。 – PowerUser

+0

複数のバージョンのAccessがありますか?あなたはフルバージョンか、ランタイムだけを持っていますか?どのOS? – Oorang

+0

Oorang、標準のXPボックスで動作するAccess 2000(フルバージョン)からAccess 2003をアップグレードしました。私はそれが私のレジストリを傷つけた私のCrystal Reportsのアップグレードだと思うが、私はこれをチェックする方法を知らない。 – PowerUser

4

これをAccessで記述する場合は、Applicationオブジェクトが既に存在するため、これを行う必要はありません。これをExcelまたはWordで作成する場合は、アクセスライブラリへの参照を追加する必要があります。ツール/リファレンスに移動し、Microsoft Access XXオブジェクトライブラリを探します。

+0

いいえ、アクセスライブラリへの参照は必要ありません。元のポスターがそれを行っていたため、アクセスライブラリがなくてもよいでしょう。 Excelでは、参照がなくても、Excel VBAはAccess.Applicationデータ型について何も知らないため、動作できません。 –

+0

インテリセンスと早期拘束をしたい場合。私は通常両方を行います - 私はコーディング中に参照を追加し、後でバインディングのために一般オブジェクトに戻します。 –

+1

通常、ターゲットマシンにAccessがインストールされているかどうかはわかりません。そうでない場合は、早期バインディングを使用している(つまり参照を設定している)場合、ユーザーはコンパイルエラーを受け取り、アプリケーションは実行されません。だから、デビッドはあなたがそれがなくても良いと言いました。つまり、レイトバインディング(つまりCreatObject)を使用して、Accessが実行時に存在するかどうかをテストし、正常に処理するかどうかをテストする方が良いと言いました。あなたは早期バインディング(インテリセンスなどのために)でコーディングし、展開のためにレイトバインディングに切り替えることができます。 – onedaywhen

1

MS Accessの[ヘルプ]メニューから[検出と修復]を実行してください。私にとって完璧に働いた。

関連する問題