私はこの問題を解決しようとしてきましたが、問題の解決策がどこにも見つからないようです。最初の部分は次のとおりです。VBA シェル コマンドは常に「ファイルが見つかりません」を返すその質問では、何らかの奇妙な理由 (おそらくセキュリティ設定) により、%APPDATA% フォルダーでアプリケーションが見つかりませんでした。
それ以来、正しく動作することを少し期待して、インポートツールをデータベースを保存しているのと同じディレクトリに移動しました。
私の目的は、MS Access のボタンをクリックして、インポート ツールを直接実行することです。現在、ツールを保持しているフォルダーを開いています。これは、管理者権限を持つ私の開発マシンでは機能しますが、管理者権限のない他のマシンでは機能しません。現在のコードは次のようになります。
Dim hProcess as Long
Dim myPath as String
Dim ex as String
ex = "C:\WINDOWS\explorer.exe "
myPath = Environ("ProgramFiles(x86)") & "\mytool\"
hProcess = Shell(ex & myPath, vbNormalFocus)
これにより、ファイルを保持するフォルダーを開くことができますが、完全な管理者権限を持つコンピューター アカウントでのみ可能です。これを完全な権限を持たないマシン アカウントで実行すると、何も実行されません。
私も次のことを試しました:
Dim hProcess As Long
Dim myPath as String
myPath = Environ("ProgramFiles(x86)") & "\mytool\mytool.exe"
hProcess = Shell(myPath, vbNormalFocus)
このセクションは、プロセス マネージャーを見るとアプリケーション「mytool.exe」をロードするという点で「機能しているように見えます」。ただし、数秒後 (おそらく 20 秒) に、アプリケーション「mytool.exe」が動作を停止したことを示すダイアログがポップアップ表示されます。
ここで注意すべきことの 1 つは、開発マシンでは管理者権限を持っていますが、ホーム マシンではすべての権限を持っていることです。私のホーム マシンでは、この 2 番目のコードは問題なく動作します。私の開発マシンではクラッシュしますが、制限されたユーザー マシンでは何もしません。
管理者未満の権限を使用して MS Access からこのアプリケーションを開く方法について何か提案はありますか? アプリケーションを直接実行するか、少なくともそのアプリケーションが存在するフォルダーを開きます。
ありがとう!
PSスタックオーバーフローで見つかったShellAndWaitとRunApplicationの両方のコードを試しましたが、どちらもこのインスタンスでは機能しません。