2016-11-01 20 views
0

VBAにサーバー上のフォルダを作成させようとしています。以下のコードは正常に動作します:VBAを実行するUnixコマンドで実行時エラーが発生する5

Public pUser As String 
Public pPass As String 
Public pHost As String 
Public cmd2 As Variant 

Sub PlinkUserInfo() 
Const cstrSftp1 As String = "C:\Program Files (x86)\PuTTY\plink.exe" 
pUser = InputBox("Please enter your Putty username") 
pPass = InputBox("Please enter your Putty password") 
pHost = Workbooks("Robot Model.xlsm").Worksheets("Preparation").Range("C6").Value 
pCommand = "cd /busbank/home; mkdir test3" 
cmd2 = cstrSftp1 & " -l " & pUser & " -pw " & pPass & " -P 22 -2 -ssh " & pHost & " " & pCommand 
Dim waitOnReturn As Boolean: waitOnReturn = True 
Dim windowStlye As Integer: windowStyle = 1 
Debug.Print cmd2 
Call Shell(cmd2, vbNormalFocus) 
End Sub 

しかし、私は二つの部分にこのコードを壊したく、以下のように、他のマクロとは別にそれらを呼び出す:

Public pUser As String 
Public pPass As String 
Public pHost As String 
Public cmd2 As Variant 

Sub PlinkUserInfo() 
Const cstrSftp1 As String = "C:\Program Files (x86)\PuTTY\plink.exe" 
pUser = InputBox("Please enter your Putty username") 
pPass = InputBox("Please enter your Putty password") 
pHost = Workbooks("Robot Model.xlsm").Worksheets("Preparation").Range("C6").Value 
End Sub 

Sub PlinkRunCommand() 
cmd2 = cstrSftp1 & " -l " & pUser & " -pw " & pPass & " -P 22 -2 -ssh " & pHost & " " & pCommand 
Dim waitOnReturn As Boolean: waitOnReturn = True 
Dim windowStlye As Integer: windowStyle = 1 
Debug.Print cmd2 
Call Shell(cmd2, vbNormalFocus) 
End Sub 

Public pCommand As Variant 

Sub SetUpRemoteFolder() 
Call PlinkUserInfo 
pCommand = "cd /busbank/home; mkdir test3" 
Call PlinkRunCommand 
MsgBox ("The server folder is successfully created.") 
End Sub 

コールシェル部分は私が時間を実行していますエラー5、プロシージャコールまたは引数が無効です。誰でも知っている理由は?

+0

パスを引用していないので、 'c:\ program'という名前のプログラムを実行しようとしています。引数は' files(x86)\ putty \ plink.exe'です。 –

答えて

2

PlinkUserInfo()でcstrSftp1を定義し、PlinkRunCommand()ではそれを使用しますが、PlinkUserInfoではプライベートであり、PlinkRunCommandでは定義されていません。次に、実際のパスを使わずにシェルを呼び出すようにします。

"option explicit"を使用する場合は、すべての変数を定義する必要があり、この場合はエラーメッセージが表示されます。

+0

問題が解決しました!どうもありがとう! – vivi11130704

関連する問題