使用批处理文件将文件从文件夹及其子文件夹复制到另一个位置文件夹,其中 Excel 宏和命令不会自动运行

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

我正在使用批处理文件将文件从一个特定文件夹及其子文件夹复制到服务器位置特定文件夹,但我无法自动运行 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"
excel vba powershell batch-file
1个回答
0
投票

我认为问题是您在运行命令中没有模块名称。

这个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 编辑器中调用的模块

© www.soinside.com 2019 - 2024. All rights reserved.