2014-01-21 6 views
1

Я новичок в этом и надеюсь, что я делаю это правильно.Выполнение .bat-файла из VBA vs Выполнение .bat-файла с помощью ручного нажатия

У меня есть файл bat, который будет искать ключ реестра под hklm \ Apache Software Foundation \ Tomcat. Файл Bat возвращает ответ, когда я вручную нажимаю на него, но не выполняет поиск ключа, когда он вызывается Shell с помощью Excel VBA. Вот файл летучая мышь:

@echo off 
setlocal enableextensions enabledelayedexpansion 
set xx=2 
for /f "tokens=3 delims= " %%D in (
'reg query \\servername"\hklm\software\Apache Software Foundation\Tomcat" /s /v Version' 
) do (
if !xx!==1 set "var3=%%D," 
set /a "xx = xx - 1" 
) 
if "%var3%"=="" (set "var3= ,") 
echo %var3% 
pause 

и вот как это называется по VBA: вызовов Shell ("C: \ Users \ mynetworkID \ Desktop \ c.bat")

Он запускает файл битой правильно но он не выполняет поиск ключа регистра. Любые идеи почему? Заранее спасибо

+0

Попробуйте использовать @echo вне линии: посмотрите, что он на самом деле делает –

+0

Он отображает блоки кода, но ошибка остается, когда я запускаю биту с VBA. FYI это сообщение об ошибке: Ошибка: Системе не удалось найти указанный раздел реестра или значение – Alex

+0

Вы работаете под управлением администратора при запуске вручную? Или как тот же пользователь, который запускает Excel? –

ответ

0

Shell() не может обойти regsvr32.exe без разрешения, и ShellExecute API можно использовать вместо:

http://support.microsoft.com/kb/238245

Желания у меня есть код для него, но сейчас проект не в моя рука больше

Смежные вопросы