2

CDLLを使用するExcelVBAアプリケーションで問題が発生しています。DLLは常にスプレッドシートの上のディレクトリに保存され、そのメソッドはVBA内から;を使用して呼び出されます。

#If Win64 Then
   Public Declare PtrSafe Function <function name> Lib "..\<dllname>" () As Long
#else
   Declare Function <function name> Lib "..\<dllname>" () As Long
#end if

これらの2つのファイルとそのディレクトリ構造をzipファイルでラップし、Windowsインストール(異なるバージョンと32ビットまたは64ビット)内で移動できます。1台のコンピューターを除いて正常に動作し、理由はわかりません。私たちが得るのは、プログラムがdllメソッドを呼び出したVBAメソッドから..\にあるdllを見つけることができないというエラーだけです。MFC100.dllをインストールすると、以前のランタイムエラー53の問題が解決され、現在の場所にたどり着きました。

これを解決する方法についてアドバイスがあれば、または何を試すべきかについてのアイデアがあれば、私は非常に感謝します、ジェームズ

4

3 に答える 3

3

実際に問題が DLL の依存関係の 1 つが欠落している場合、VBA は DLL が「見つからない」と不平を言う傾向があります。それが問題だと思います。Visual C++ ライブラリを (再) インストールしてみてください。または、問題の DLL をDependency Walker (または同様のツール) で開き、何が必要かを正確に調べます。

于 2012-11-19T17:54:07.480 に答える
2

依存関係ウォーカーをダウンロードしている間に、 ProcMonをダウンロードして、VBA アプリが実際に実行時に見ている場所を確認します。

于 2012-11-20T07:41:34.930 に答える