折腾手记

运维!!运维!!

0%

VBA调用命令行工具,无窗口并获得返回值

VBA调用命令行工具,无窗口并获得返回值

wscipt.run 能隐藏窗口调用命令行工具,返回命令行工具执行状态
wscript.exec 能返回命令行工具stdout,但不能隐藏命令行窗口

可以将命令行输出结果重定向到剪贴板,再用vba获取剪贴板内容

1
2
3
4
5
6
7
8
9
10
11
12
Dim objWsh As Object

Cmdread = "powershell Invoke-Expression 'dir | Set-Clipboard'"

' 使用wscript.shell的run方法,可以隐藏powershell的窗口,后面的true表示等待进程结束
Application.StatusBar = "运行命令...."
Set objWsh = CreateObject("WSCript.shell")
objWsh.Run Cmdread, 0, True

' 获取剪贴板内容,写入对应单元格
Application.StatusBar = False
Sheet1.Range("A1").PasteSpecial