2016-11-08 9 views
-1

VBAを使用してUNIXに接続し、サーバーから一連のファイルをダウンロードしています。しかし、私は "実行時エラー13.タイプミス"私の "cmd5"の行との間違いが発生します。コードは次のとおりです。VBAを使用したUnixコマンドと配列の取得タイプの不一致エラー

Sub DownloadFirstRunFilesPart2() 
Application.StatusBar = "Downloading files..." 
Dim wsh As Object 
Dim errorcode4 As Integer 
Dim cmd5 As Variant 
Dim FirstRunFiles(5) As Variant 
Dim var As Variant 

'Files that need to be downloaded 
FirstRunFiles(0) = ProN & "_KSParameter_UserInput.xlsx" 
FirstRunFiles(1) = ProN & "_KSParameter_SysOutput.xlsx" 
FirstRunFiles(2) = ProN & "_ModelParameter_UserInput.xlsx" 
FirstRunFiles(3) = ProN & "_ModelParameter_SysOutput.xlsx" 
FirstRunFiles(4) = ProN & "_VarClusParameter_UserInput.xlsx" 
FirstRunFiles(5) = ProN & "_VarClusParameter_SysOutput.xlsx" 

'Connect to server and run loop to download files. Error occurs in "cmd 5" line 
For Each var In FirstRunFiles 
cmd5 = Chr(34) & "C:\Program Files (x86)" & "\PuTTY\pscp.exe" & Chr(34) & " -sftp -l " & pUser & " -pw " & pPass & _ 
    " " & " " & pHost & ":" & ServerPath & "/" & FirstRunFiles(var) & " " & LocalPath & "/" 
Set wsh = CreateObject("wscript.shell") 
errorcode4 = wsh.Run(cmd5) 

'Get feedback and display error message 
If errorcode4 <> 0 Then MsgBox ("Error occurs. Fail to download " & FirstRunFiles(var)) 
Next var 

Application.StatusBar = "Download complete" 
End Sub 

誰かを教えてください。どうもありがとう!!

+0

あなたがcmd5' 'の値を出力し、デバッグ行を追加する必要があります。それをコピーして端末環境に貼り付け、それが動作するかどうかを確認します(私はそれが期待できません)。どのエラーメッセージが表示されているのかを確認し、エラーメッセージを排除してコードを修正し、プロセスを動作させます。がんばろう。 – shellter

+0

の 'errorcode4 = wsh.Run(cmd5)'行の前に 'Debug.Print cmd5'を実行する行を挿入し、' wsh.Run(cmd5) '命令/行にブレークポイント(F9)を挿入します。マクロを実行します。実行が停止すると、*即時ペイン*(Ctrl + G)の内容を確認します。それは正当なコマンドのように見えますか?必要に応じて調整します。 –

+0

私はそれらの方法を試みました。みんなありがとう! – vivi11130704

答えて

2

文字列を配列のインデックスとして使用することはできません。

すべての変数がコードの他の部分で定義されており、モジュールレベルのスコープを持っていると仮定すると、次のわずかな変更によってコードが有効になることがあります。用途:

cmd5 = Chr(34) & "C:\Program Files (x86)" & "\PuTTY\pscp.exe" & Chr(34) & " -sftp -l " & pUser & " -pw " & pPass & _ 
    " " & " " & pHost & ":" & ServerPath & "/" & var & " " & LocalPath & "/" 

の代わり:

cmd5 = Chr(34) & "C:\Program Files (x86)" & "\PuTTY\pscp.exe" & Chr(34) & " -sftp -l " & pUser & " -pw " & pPass & _ 
    " " & " " & pHost & ":" & ServerPath & "/" & FirstRunFiles(var) & " " & LocalPath & "/" 
+0

非常にうまくいく!どうもありがとう! – vivi11130704

関連する問題