Ho cercato di risolvere questo problema, e sembra che non riesca a trovare la soluzione al problema da nessuna parte. Ecco la prima parte: VBA Shell command always returns "File Not Found" In questa domanda, non trovava l'applicazione nella cartella% APPDATA% per qualche strano motivo, probabilmente un'impostazione di sicurezza.VBA: Come eseguire un'altra applicazione da MS Access
Da allora ho spostato lo strumento di importazione nella stessa directory in cui ho archiviato il database, con la minima speranza di farlo funzionare correttamente.
Il mio obiettivo è fare clic su un pulsante in MS Access e farlo eseguire direttamente il mio strumento di importazione. In questo momento, ho aperto la cartella che contiene lo strumento. Funziona sul mio computer di sviluppo che ha privilegi di amministratore, ma non funziona su altri computer senza privilegi di amministratore. Il codice in questo momento sembra qualcosa di simile al seguente:
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)
In questo modo la cartella che contiene il file da aprire, ma solo su account computer che hanno i privilegi di amministratore. Quando si esegue questo su un account macchina che ha meno di privilegi completi, semplicemente non fa nulla.
Ho anche provato la seguente:
Dim hProcess As Long
Dim myPath as String
myPath = Environ("ProgramFiles(x86)") & "\mytool\mytool.exe"
hProcess = Shell(myPath, vbNormalFocus)
Questa sezione "sembra" funzionare nel senso che carica l'applicazione "mytool.exe" quando guardo il gestore del processo. Tuttavia, dopo alcuni secondi (forse 20), viene visualizzata una finestra di dialogo che informa che l'applicazione "mytool.exe" ha smesso di funzionare.
Una cosa da notare qui è che ho i privilegi di amministratore sul mio computer di sviluppo, ma ho tutti i privilegi sul mio computer di casa. Sulla mia macchina di casa, questo secondo codice funziona senza alcun problema. Alla mia macchina di sviluppo, si blocca, mentre su una macchina utente con restrizioni, non fa nulla.
Esistono suggerimenti su come aprire questa applicazione da MS Access mentre si utilizzano privilegi meno di amministratore? O per eseguire direttamente l'applicazione o per lo meno aprire la cartella in cui risiede la suddetta applicazione.
Grazie!
P.S. Ho provato sia il codice ShellAndWait che il codice RunApplication trovati su stackoverflow, nessuno dei quali funziona in questa istanza.
Sarà questo lavoro con VBA? So che molte istruzioni VB nel set non hanno controparti in VBA. –
L'ho provato in VBA, ma non ho idea se funzionerà nella tua situazione. Tutto quello che posso dire è che funzionava in VBA sul mio PC di casa. – Fionnuala
Viene visualizzato un errore di "Metodo o Datamember non trovato" nel metodo objShell.Namespace(). Inoltre, non so cosa dimensionare objFolder e objFolderItem come. Attualmente, sono quotati come varianti. –