Как вызвать Java-объект в VBA с classpath - PullRequest
0 голосов
/ 10 июля 2019

Мы используем CMD для вызова скрипта PowerShell.В скрипте PowerShell вызывается Java-программа.Оба файла находятся в одном каталоге.Я хочу, чтобы все это заменил VBA в Microsoft Access.Я нашел несколько связанных тем, но я не могу решить, возможно ли это или нет, основываясь на этих темах.Такие темы, как Запуск файла JAR из кода VBA

CMD содержит следующий код:

SET CLASSPATH=.\yyyyy.jar
powershell .\startscript.ps1

Сценарий PowerShell содержит следующий пример:

& java '-Djavax.net.ssl.trustStore="zzzz.keystore"' com.router.router.router.Router -user:... etc. 

Мы также запускаем ту же программу на Java в другом режиме, только с использованием одного .CMD-файла.Это делается следующим образом:

SET USR=user
SET CLASSPATH=.\yyyyy.jar
java -Djavax.net.ssl.trustStore=zzzz.keystore com.router.router.router.Router -user:%USR% etc. 

Предпочтительно и PowerShell, и CMD устаревают, а параметры типа «-user» снабжаются переменными из кода VBA.

Есть ли у кого-нибудь полезная ссылка, пример или код?Пожалуйста, совет.

1 Ответ

0 голосов
/ 11 июля 2019

То, что вы пытаетесь сделать, - это запустить команду через командную строку.Просто случается, что эта команда запускает java, что касается кода VBA, она может выполнять все, что понимает оболочка.

Ниже приведен пример кода для запуска команды через оболочку в VBA (обратите внимание, что существует множество способов, и эти примеры очень легко найти в Интернете, я просто использую первый, который нашел):

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = False
Dim windowStyle As Integer: windowStyle = 1

wsh.Run "cmd.exe /S /C " & yourCommand

... где yourCommand - буквенная строка, которую вы запускаете в командной строке.Теперь все о конкатенации строк в VBA.Следуя вашему примеру (и добавляя имя пользователя непосредственно из VBA):

user = Environ("UserName")
yourCommand = "java -Djavax.net.ssl.trustStore=zzzz.keystore com.router.router.router.Router -user:" & user 

(обратите внимание, что я заменил %USR% - который просит оболочку получить имя пользователя - на переменную user, которую я 'мы определили в VBA, хотя в этом конкретном примере функция Environ запрашивает переменные окружения, поэтому она все еще запрашивает ее в оболочке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...