我正在 Linux 上运行一些任务,该任务会生成某些 CSV。一旦生成,我需要将它们复制到 Excel 文件的不同工作表中,然后运行一些 VBA 宏来生成报告。由于这必须每天多次完成(没有预定义/固定的时间表),因此我希望将其自动化。
这是我尝试过的: 我编写了一个 VBScript,它获取 CSV 文件和其他所需的输入文件,打开一个 Excel 文件,将 CSV 复制到 Excel 中,运行一些 VBA 宏,然后保存并关闭结果。当在 Windows 服务器上本地触发时,此 VBScript 工作正常。
我已经上传了涉及文件的简单版本here这在一定程度上澄清了我的要求(请注意,与此处的宏相比,我需要运行的宏要复杂得多(约 500 行))。 存档内有四个文件:
- Template.xlsm:要向其中粘贴数据的报表的 Excel 模板
- Input_Sheet2.csv:要粘贴到模板中的输入数据到工作表 2
- Input_Sheet3.csv:要粘贴到模板中的输入数据到工作表 3
- Run.vbs:触发 Excel 模板中存在的“复制粘贴”宏的 vb 脚本。
运行 VBScript 的命令是:‘cscript//Nologo Run.vbs/NoCancel’
现在,为了自动化整个任务,我想通过 ssh 从 Linux 远程触发这个 VBScript。我在 Windows 机器上安装了 cygwin ssh 守护进程,并促进了与 Linux 机器的 ssh 连接。来自 Linux 的 cygwin ssh 连接允许运行多个 Windows 命令,但无法运行 VBScript 并且不会产生任何 excel 输出。
我无法弄清楚哪个组件有限制。 cygwin ssh 是否不利于 VBScript 的执行? VBScript 是否不便于远程创建文件? Linux上的ssh客户端是否不允许以GUI格式打开excel?或者还有另一种方法可以从 Linux 自动执行此任务。
谢谢
舒巴姆
最佳答案
我会关注:
- 您是否测试过从 Cygwin 终端运行脚本? (我确实尝试了一个简单的脚本,成功打开了 Execl (.Visible = True),所以我相信您对 cygwin 不允许打开 Excel GUI 的担心是不必要的)。
- sshd 用户帐户的路径和 cwd 是否允许短调用“cscript Run.vbs”,还是应该使用长版本“/cygdrive/c/WINDOWS/system32/cscript.exe/home/user/Run.vbs”?
- sshd 用户是否有权访问所有涉及的文件和文件夹?
- 您没有忘记 UNIX 文件系统是区分大小写的吗? (我做了并且浪费了一些时间)?
关于linux - 如何通过复制 CSV 文件并从 Linux 远程运行 VBA 宏来创建 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627948/