2017-01-20 1 views
1

특정 경로에 배치 파일을 실행하려고합니다. 이 파일에는 Excel 셀에서 매개 변수를 전달할 사용자 입력이 필요합니다. Excel에서 배치 파일을 실행하려면 클릭 명령 버튼을 사용해야합니다.Excel에서 매개 변수를 전달하는 동안 배치 파일을 실행하는 방법

VBA를 처음 사용했습니다. 다음 코드를 시도했지만 버튼을 클릭해도 아무 것도 일어나지 않습니다.

Private Sub CommandButton2_Click() 

    sid = Excel.Worksheets("Sheet1").Range("I8").Value 
    user = Excel.Worksheets("Sheet1").Range("I9").Value 
    Password = Excel.Worksheets("Sheet1").Range("I10").Value 
    msg = "hi" 
    Shell ("CMD.EXE /c C:\Users\shashank.b03\Desktop\test_CMD.bat" & sid &" "& user &" "& password &" ") 

End Sub 
+0

하는 데 도움이 - 당신이 * 모습 같은 경우는 제대로 *라고해야하는지의 샘플을 게시 할 수 있을까? 어떤 종류의 값은'sid'와'user'입니까? 작업 파일이 ""CMD.EXE/c C : \ Users \ shashank.b03 \ Desktop \ test_CMD.bat "SID USER PASSWORD"일까요? (이 경우에는 구분자가 필요합니까?) 테스트를 위해'Dim myCMD as String'을 추가 한 다음'myCMD = "CMD.EXE/c C : \ Users \ shashank.b03 \ Desktop \ test_CMD.bat"& sid & "& user &" "& password &" "'그리고 나서'debug.print myCMD'를 호출하고 실제로 호출 할 명령이 어떻게 보이는지 확인하고 정확한지 확인하십시오. – BruceWayne

+0

답장을 보내 주셔서 감사합니다 Bruce, sid, user는 oracle 데이터베이스 서버의 문자열 기반 값입니다. 배치 파일은 서버에 연결하여 작업을 수행합니다. 나는 응용 프로그램의 프론트 엔드로 봉사하는 것이 탁월하길 바란다. –

+0

우리를 용서하면, 당신은 @ BruceWayne의 매우 중요한 질문에 대답하지 않았다. 특정 셀 데이터가 주어지면 명령 줄이 올바르게 호출되는 것처럼 보이게해야합니까? – Parfait

답변

1

다음은 테스트를 거쳐 제대로 작동하는 예제입니다. 쉘 명령을 호출하고 명령 문자열을 전달합니다.

vbNormalFocus 대신 vbHide를 사용할 때 셸 창을 표시하지 않으려면 문자열 &에 배치 파일의 경로를 변경할 수 있습니다.

셀 값을 sid, user 및 password 변수에 넣기 위해이 값을 약간 변경해야합니다.

희망이 도움이됩니다.

Dim sid As String 
Dim user As String 
Dim password As String 

CommandString = "c:\test.bat" + " " + sid + " " + user + " " + password 
Call Shell("cmd.exe /c" & CommandString, vbNormalFocus) 

다음은 쉘에서 매개 변수와 배치 파일을 사용하는 기본적인 예입니다.

저장은 버튼이나 엑셀에서 다른 구성 요소 내에서이 코드를 넣어 TEST.BAT

set arg1=%1 
echo HELLO %1! 
pause 

으로 다음;

Private Sub CommandButton1_Click() 
Dim sid As String 
sid = "Shashank" 
CommandString = "c:\test.bat" + " " + sid 
Call Shell("cmd.exe /c" & CommandString, vbNormalFocus) 
End Sub 

배치 파일이 저장된 경로가 명령 문자열의 경로와 같은지 확인하십시오.

이 명령을 실행하면 sid 변수에있는 문자열이 배치 파일로 전달되어 사용됩니다. 여기에서 작업 할 수 있어야합니다.

희망이 내가 너무 쉘 함수를 호출하는 방법 쉬르하지만 그냥 궁금 아니에요

+0

안녕하세요, Nick,이 코드를 사용해 보았습니다. 배치 파일은 인수를 전달하지 않습니다. 배치 파일을 연 후에 우리는 매개 변수 –

+0

안녕하세요 Shashank 피드를 가져야 만합니다. 분명한 질문을하는 것이 유감이지만 인수에 "-"문자가 붙는 이유는 무엇입니까? –

+0

아니 닉, 나는 지금 VBA 스크립팅의 초보자입니다. –

관련 문제