2012-01-05 8 views
0

Windows 7 SP1 64ビットでMS Access 2003アプリケーションをコンパイルしてWindows 7 SP1 32ビットで起動すると、Microsoft Common Dialog Control 6.0(SP3)パスはC:\Windows\SysWOW64\comdlg32.ocxから\\shared\access\comdlg32.ocxに変わりますこれは、Windows 7 SP1 32ビットユーザーのためにアプリが起動する共有ドライブです。MSアクセスが既に存在しないパスに変更する

私がする32ビットマシン上での参照が必要になります。C:\Windows\System32\comdlg32.ocx

32ビットマシンは、上でerrorors:Dim Cnxn As ADODB.Connection Set Cnxn = New ADODB.Connectionしかし、コモンダイアログコントロールは、32ビットマシンにアプリをダウンロードすることで正しく参照されている場合、comdlg32ファイルのブラウジング、参照として追加し、再コンパイルすると、アプリは32ビットのPC上で正常に動作します。

コモンダイアログコントロールはADODBと何が関係していますか? どこにでもMicrosoft Common Dialog Controlを使用しているとは思いません。私はuがのFileDialogのためにそれを使用する場合は、参照を削除して、この記事内の溶液と交換してください...

+2

どのような目的のために参照を使用していますか、おそらくあなたはそれをすべて使用しないでください... – Arnoldiusss

+0

@Arnoldiusss私はそれを削除すると、ランタイムエラーが発生します。 – Bruno

+0

はComdlg32.OCXがインストールされ、登録されていますか? –

答えて

0

ため遅延バインディング使用される基準は、ADODBとは何の関係もありません。

使用しているかどうかを確認するテストは簡単です。参照を削除してください。プロジェクトがコンパイルに失敗した場合は、参照が使用中です。

参照を使用していない場合は、参照を削除して問題を解決してください。 が参照を使用してである場合、Arnoldiusssが示唆しているように、その機能をWindows API呼び出しで置き換えることができます。

+0

この機能は、Accessの最新バージョンではすでに利用できます。 Access 1997では、Arnoldiusssが引用した例が必要でしたが、2003ではそうではありませんでした。 – Fionnuala

+0

@RemouあなたがAccessの 'FileDialog'を指しているのなら、それは実行時アプリケーション(そして私がこれまで作業したすべてのAccessプロジェクト)専門的にランタイムアプリケーションとして配布されました)。 – phoog

+0

私はAccess 2010 accdeでテストしましたが、/ runtimeスイッチとapplication.filedialogはうまく動作していたようです。 – Fionnuala

1

をより多くのテストを行います。

http://access.mvps.org/access/api/api0001.htm

EDIT:これはまた、新しいバージョンで動作するはずですがこれは、comdlg32.ocxコントロールを使用して回避する単なる方法だからです。

comdlg32.ocxがAccessを読み込めなかったときに参照をロードするループが終了し、ADODBコンポーネントがロードされないため、別の参照であるため、ADODBエラーが発生します。あなたが試みることができる

別のオプションは、参照を削除し、例

Dim fDialog As Object ' previous Office.FileDialog 
Set fDialog = CreateObject("Office.FileDialog") 
関連する問題