2016-11-24 32 views
0

我想自动创建一个excel文件的报告。我已经分析了一个特定的文件,报告保存在本地。如何使用powershell运行不同路径的个人宏

现在我想用这个宏在其他文件上运行它。因此我必须更改PowerShell中的路径。

现在我想用powershell自动运行宏(让我们说凌晨1点)。

$excel = New-Object -comobject Excel.Application 
$wbPersonalXLSB = $excel.workbooks.open("C:\Users\fami\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB") 
$FilePath = "C:\Users\fami\Desktop\example.xls" 
$workbook = $excel.Workbooks.Open($FilePath) 
$excel.Visible = $false 
$worksheet = $workbook.worksheets.item(1) 
$excel.Run("PERSONAL.XLSB!run") 
$wbPersonalXLSB.Close() 
$workbook.save() 
$workbook.close() 
$excel.quit() 

只有$FilePath需要变量。

回答

0

您只需将Parameter用于$ FilePath变量而不是对其进行硬编码。就像这样:

param([string]$FilePath) 

$excel = New-Object -comobject Excel.Application 
$wbPersonalXLSB = $excel.workbooks.open("C:\Users\fami\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB") 
$workbook = $excel.Workbooks.Open($FilePath) 
$excel.Visible = $false 
$worksheet = $workbook.worksheets.item(1) 
$excel.Run("PERSONAL.XLSB!run") 
$wbPersonalXLSB.Close() 
$workbook.save() 
$workbook.close() 
$excel.quit() 

,那么你会安排脚本并指定-FilePath paramater像这样:

powershell.exe -file C:\folder\yourscript.ps1 -FilePath "C:\Users\fami\Desktop\example.xls" 

编辑:要读取的文本文件的文件列表(每行一个文件)就是这样。

param(
    [string]$FileList, 
    [string]$PersonalXLSB="C:\Users\fami\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB", 
    [string]$RunMacro="PERSONAL.XLSB!run" 
) 

$Files = Get-Content $FileList 

foreach ($FilePath in $Files) { 
    $excel = New-Object -comobject Excel.Application 
    $wbPersonalXLSB = $excel.workbooks.open($PersonalXLSB) 
    $workbook = $excel.Workbooks.Open($FilePath) 
    $excel.Visible = $false 
    $worksheet = $workbook.worksheets.item(1) 
    $excel.Run($RunMacro) 
    $wbPersonalXLSB.Close() 
    $workbook.save() 
    $workbook.close() 
    $excel.quit() 
} 

我也感动了PersonalXLSB和宏PARAMS,因为他们有这个设置的值将作为默认值,如果不指定任何东西。这是最基本的形式是这样的:

powershell.exe -file C:\folder\yourscript.ps1 -FileList "C:\folder\name.text" 

可以改变其他PARAMS这样的:

powershell.exe -file C:\folder\yourscript.ps1 -FileList "C:\folder\name.text" -RunMacro="PERSONAL.XLSB!macroname" 
+0

是,这是我所想象。仍然无法安排脚本,只是尝试与任务计划程序,但它不工作。写一个脚本来安排时间会更好吗? –

+0

可能是因为你需要脚本在任务调度器中的完整路径:'powershell.exe -file C:\ folder \ yourscript.ps1 -FilePath“C:\ Users \ fami \ Desktop \ example.xls”' –

+0

完美...我是否有可能在-FilePath中变得更加可变......就像从文本文件中读取路径......例如在循环中。 –

相关问题