通过 VBA 运行 Unix 命令并在 Excel 电子表格中返回结果

问题描述 投票:0回答:1

我有这个 Unix 命令

cat /dataops/profits/name.csv

我可以将它保存到

.txt
文件并通过 VBA 宏运行,然后自动将结果返回到我的 Excel 电子表格中吗?

vba unix
1个回答
0
投票

最难的部分是将文件从 Unix 机器上转移到 Windows 计算机上。您有几种不同的方法:

1) 这是一个纯粹的 VBA 方法。您需要从 here 下载 Putty 的免费命令行版本 plink。在这种方法中,您在命令行上流式传输数据并将数据传输到本地文本文件中。

cmd = "C:\MyUtilities\plink.exe -pw PASSWORD USERNAME@IPADDRESS cat /dataops/profits/name.csv"

Set datafile = CreateObject("Scripting.FileSystemObject").CreateTextFile("c:\name.csv", True)

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec(cmd)
Do While oExec.Status = 0
   If Not oExec.StdOut.AtEndOfStream Then
      datafile.WriteLine oExec.StdOut.Readall
   End If
Loop
datafile.Close

2) 另一种方法是运行 Windows 计划任务批处理文件,该文件使用 FTP 传输文件,如 here 所述。我个人认为这将是你最好的选择,因为 VBA 代码可以专注于加载文件,而不是连接到 Unix 并获取文件。

3) 如果您在您的 Unix 服务器上为一个目录设置了 Samba 共享,那么您将能够从 Windows 看到该目录,并且可以直接去那里获取文件。

在 Windows 计算机上拥有该文件后,您可以打开 Excel 并像这样加载文件:

Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.Workbooks.Open("c:\name.csv")
© www.soinside.com 2019 - 2024. All rights reserved.