子プロセスが環境変数を変更したり、親プロセスに戻したりすることは可能ですか?
例えば:
一連のアクセス データベースを実行するバッチ ファイルがあります。データベースがクエリを実行したら、VBA を使用して値をバッチ ファイルに戻したいのですが、これを機能させることができないようです。
関数を使用して親変数を読み取ることはできますが、getEnvironmentVariable
機能してsetEnvironmentVariable
いないようです。
子プロセスが環境変数を変更したり、親プロセスに戻したりすることは可能ですか?
例えば:
一連のアクセス データベースを実行するバッチ ファイルがあります。データベースがクエリを実行したら、VBA を使用して値をバッチ ファイルに戻したいのですが、これを機能させることができないようです。
関数を使用して親変数を読み取ることはできますが、getEnvironmentVariable
機能してsetEnvironmentVariable
いないようです。
vba には、それを呼び出したバッチ環境の独自のコピーがあります。ローカル コピーに値を設定できますが、vba が制御をバッチ スクリプトに戻すと消えます。したがって、答えはノーです。やりたいことを直接行うことはできません。
あなたがやりたいことは、共通のニーズです。1 つの解決策は、値を一時ファイルに書き込み、親バッチ スクリプトで値を読み取って一時ファイルを削除することです。
vba が stdout に書き込める場合は、一時ファイルを回避できます。できると思いますが、よくわかりません。バッチ スクリプトは、FOR /F を介してデータベースを呼び出し、stdout 出力を処理できます。FOR /F が出力を解析する方法には多くのオプションがあります。
一般的な構文は次のとおりです。
for /f "options" %%A in ('yourCommand') do (REM process values using %%A)
FOR コマンドの完全なヘルプを表示するには、コマンドプロンプトからHELP FOR
orを入力します。FOR /?