首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Basic for Applications (VBA)外壳

Visual Basic for Applications (VBA)外壳
EN

Stack Overflow用户
提问于 2013-04-07 03:58:19
回答 1查看 4.3K关注 0票数 0

我想在我的linux服务器上使用Excel中的VBA调用脚本。为此,我使用path中的本地Putty副本。

我已经成功地编写了一个命令来创建putty会话并登录到服务器,我只是不确定在shell中打开该命令后如何传递另一个命令。

有什么想法吗?

下面的子例程可以工作,但在尝试第二个命令时会导致问题。

干杯

代码语言:javascript
复制
Sub test()
Dim putty As String
Dim strCommand As String
Dim strCommand1 As String
Dim User As String
Dim Pass As String
Dim Host As String
Dim File As String
Dim RemotePath As String

putty = """" & Range("E3").Text & "\Putty.exe"""
User = Range("E8").Text
Pass = Range("E9").Text
Host = Range("E7").Text
'File = """" & Range("E11").Text & """"
RemotePath = Range("E10").Text

strCommand = putty & " -l " & User & " -pw " & Pass & _
    " " & File & " " & Host & ":" & RemotePath
'MsgBox strCommand
Shell strCommand, 1 ' vbNormalFocus '
Module2.WaitFor (5)
Shell "ls -l > shell.log", 1
End Sub
EN

回答 1

Stack Overflow用户

发布于 2013-04-07 17:47:12

使用其他工具执行外壳命令plink通过以下代码执行此命令:

代码语言:javascript
复制
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Sub ShellAndWait(ByVal program_name As String, _
    ByVal window_style As VbAppWinStyle)
Dim process_id As Long
Dim process_handle As Long

    ' Start the program.
    On Error GoTo ShellError
    process_id = Shell(program_name, window_style)
    On Error GoTo 0

    DoEvents

    ' Wait for the program to finish.
    ' Get the process handle.
    process_handle = OpenProcess(SYNCHRONIZE, 0, process_id)
    If process_handle <> 0 Then
        WaitForSingleObject process_handle, INFINITE
        CloseHandle process_handle
    End If

    Exit Sub

ShellError:
    MsgBox Err.Description, vbOKOnly Or vbExclamation, "Error"
End Sub

ShellAndWait "plink -pw password -noagent user@server.com ""rm -f /tmp/file.txt ; gunzip /tmp/file.txt.gz""", vbMaximizedFocus
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15855386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档