【发布时间】:2020-07-07 00:06:54
【问题描述】:
我有一个简单的 powershell 脚本,我保存在 C:\Users\Public 中,其中包含以下代码:
#run program
$excel = new-object -comobject excel.application
$excelFiles = Get-ChildItem -Path "C:\Users\Public" -Include *.xls, *xlsm -Recurse
Foreach($file in $excelFiles)
{
$workbook = $excel.workbooks.open("sendEmail.xlsm")
$worksheet = $workbook.worksheets.item(1)
$excel.Run("CDO_Mail_Small_Text")
$workbook.save()
$workbook.close()
}
$excel.quit()
如您所见,该脚本会打开一个与 .ps1 文件位于同一文件夹中的 excel 文件。 excel文件应该发送一封电子邮件。这是我创建的一个测试用例,它在我的本地机器上运行良好。
我正试图让它在 RDP 上运行。当我将这两个文件从本地计算机复制到 RDP (C:\Users\Public) 上的同一位置并在那里通过 powershell 运行 .ps1 文件时,出现以下错误:
Exception calling "Open" with "1" argument(s): "'sendEmail.xlsm' could not be found.
由于这在我的计算机上完美运行,我不知道为什么它无法在远程计算机上运行。有什么想法吗?
最终,这就是我想要做的:
- 我在 RDP 上有一个 Access 数据库
- 我在映射驱动器上有一个 Excel 文件
我需要经常自动打开 Excel 文件,从 Access 数据库中提取一个表,然后操作 Excel 文件中的数据并发送电子邮件。这一切都非常具体到我的业务细节,所以我欢迎关于替代想法的建议,但“只在 Access 中做所有事情”不是一个选项。
我做了一个测试用例,所有东西都在映射的驱动器上,在这种情况下一切正常,包括让它作为重复的计划任务运行。我只需要弄清楚如何让它与 RDP 上的 Access 数据库一起工作。
谢谢。
【问题讨论】:
标签: excel powershell ms-access