我正在使用批处理文件将文件从一个特定文件夹及其子文件夹复制到服务器位置特定文件夹,但我无法自动运行 Excel 文件中的宏和命令选项卡。
我在批处理文件下运行,并且在 Excel 中运行宏和命令工作正常
@Powershell -NoP -C "GCI $(GCI \"H:\Molding\Molding Parameters\"|?{$_.PSIsContainer}|%%{$_.FullName}) -R|?{!$_.PSIsContainer}|Select FullName,CreationTime|Export-csv -NoT \"D:\Source\Bhavesh.csv\""
"C:\Program Files\Microsoft Office\Office15\excel.exe" "d:\source\macro_Molding.xlsm"
"taskkill /IM "powershell.exe" /F"
但是当我想运行 Excel 宏和命令选项卡时,也包括在批处理文件中,如下 → 宏未运行
@Powershell -NoP -C "GCI $(GCI \"H:\Molding\Molding Parameters\"|?{$_.PSIsContainer}|%%{$_.FullName}) -R|?{!$_.PSIsContainer}|Select FullName,CreationTime|Export-csv -NoT \"D:\Source\Bhavesh.csv\""
"C:\Program Files\Microsoft Office\Office15\excel.exe" "d:\source\macro_Molding.xlsm"
$excel = new-object -comobject excel.application
$excelFiles = Get-ChildItem -Path C:\fso -Include *.xls, *.xlsm -Recurse
Foreach($file in $excelFiles)
{
$workbook = $excel.workbooks.open($file.fullname)
$worksheet = $workbook.worksheets.item(1)
$excel.Run("MoldData_Copy")
$workbook.save()
$workbook.close()
}
$excel.quit()
"taskkill /IM "powershell.exe" /F"
我认为问题是您在运行命令中没有模块名称。
这个vbs代码对我有用:
ExcelFilePath = "\\FS06\Users6\a78208\Dokument\Skrivare Landskrona.xlsm"
MacroPath = "Modul1.uppdatera"
On Error Resume Next
Set ExcelApp = GetObject(, "Excel.Application")
If ExcelApp is Nothing then
set newExcel = True
Set ExcelApp = CreateObject("Excel.Application")
End If
ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False
Set wb = ExcelApp.Workbooks.Open(ExcelFilePath)
ExcelApp.Run MacroPath
wb.Save
ExcelApp.DisplayAlerts = True
If newExcel then
wb.Close
ExcelApp.Quit
end if
所以我相信你的代码需要替换它:
$excel.Run("MoldData_Copy")
与:
$excel.Run("Module1.MoldData_Copy")
或者您在 Excel VBA 编辑器中调用的模块