Tag: powershell v2.0

使用PowerShell刷新Excel表

我在一个名为test的文件夹中有10个excel表格。 我想使用Windows Power Shell脚本刷新数据透视表中的数据连接和数据。 该过程是使用每个循环打开每个文件,然后在文件中selectpowerpivot菜单刷新所有的数据,将刷新OLEDB和OLAP查询,然后closures该页面,并进入数据选项卡,点击刷新全部button后在每张Excel表格中刷新工作簿5张表格中有5张B4表示切片机中的月份。 我们需要在所有4张表中select前一个月,比保存excel.xlsx文件,并转到下一个文件做相同的过程。 我有基本的代码,如果有人可以帮助修改代码。 工作表1工作表3工作表4工作表5具有切片机。 #Set the file path (can be a network location) $filePath = "C:\test" $excelObj = New-Object -ComObject Excel.Application $excelObj.Visible = $true #Open the workbook $workBook = $excelObj.Workbooks.Open($filePath) #Focus on the top row of the "Data" worksheet $workSheet = $workBook.Sheets.Item("PowerPivot") $workSheet.Select() $workSheet.PowerPivotWindow foreach ($file in $excelfiles) { $workSheet = […]

PowerShell脚本从特定的Outlook文件夹中提取.xls文件

我想从每天收到的电子邮件中提取并保存一个.xls文件。 我有一个规则设置,将邮件保存在收件箱的特定子文件夹中的Outlook邮箱中。 Outlook文件夹结构如下所示: -> Inbox –> Data (subfolder of "Inbox") —> ToExtract (subfolder of "Data") 我需要从“ToExtract”文件夹中提取.xls文件。 我发现一个脚本可以完成大部分工作,但是它需要用户监督脚本并手动select要search的Outlook文件夹。 我需要更改脚本,以便它指向“ToExtract”子文件夹。 代码如下。 它工作正常,但我需要修改pickfolder()部分。 #file path $filepath = “c:\test\” #set outlook to open $o = New-Object -comobject outlook.application $n = $o.GetNamespace(“MAPI”) #you'll get a popup in outlook at this point where you pick the folder you want to scan […]

没有Office套件的ComObject Excel.Application

我需要从Powershell读取Excel文件。 我正在使用这个对象: $objExcel=New-Object -ComObject Excel.Application 它在Office安装的机器上工作正常,但如果Office未安装,我得到此错误: Retrieving the COM class factory for component with CLSID {} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). 是否有一些Office的运行时环境使用?

为什么在VBScript中快速写入Excel单元格值,但在PowerShell中速度慢?

为什么在VBScript中将单元格值写入Excel比在PowerShell中快得多? PowerShell不是新事物,而VBScript是不赞成的MS脚本语言? VBScript的例子(保存到filename.vbs)这运行在一瞬间。 Set objExcel = CreateObject("Excel.Application") objExcel.Visible = false Set objWorkbook = objExcel.Workbooks.Add() ' Edit: increased number of writes to 500 to make speed difference more noticeable For row = 1 To 500 'Edit: using .cells(row,1) instead of .cells(50,1) – this was a mistake objWorkbook.workSheets(1).cells(row,1).value = "test" Next objWorkbook.SaveAs(CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) & "\test.xlsx") objExcel.Quit msgbox "Done." […]

作为计划任务运行时,Powershell脚本无法访问文件

我的Powershell(2.0)脚本具有以下代码片段: $fileName = "c:\reports\1.xlsx" $xl = new-object -comobject excel.application $xlFormat = [Microsoft.Office.Interop.excel.XlFileFormat]::xlWorkbookDefault $xl.displayalerts = $false $workbook = $xl.workbooks.open($fileName) #Code to manipulate a worksheet $workbook.SaveAs($fileName, $xlformat) $xl.quit() $error | out-file c:\reports\error.txt 我可以在Powershell命令提示符下运行这个脚本,没有任何问题。 电子表格被更新,并且error.txt是空的。 但是,当我在任务计划程序中将其作为任务运行时,第一行出现错误。 使用“1”参数调用“打开”的exception:“Microsoft Office Excel无法访问文件'C:\ reports \ 1.xlsx'。有以下几种可能的原因:文件名或path不存在。正在被另一个程序使用您尝试保存的工作簿与当前打开的工作簿具有相同的名称。 我使用与在Powershell命令提示符下运行脚本相同的凭据来运行该任务。 当我手动运行脚本时,它可以打开,更新和保存电子表格而不会出现问题。 当我在任务计划程序中运行它时,它不能访问电子表格。 所讨论的文件对于所有用户是可读/可写的。 我已经validation了我可以使用相同的凭据在Excel中打开文件。 如果我制作一个新的电子表格,并将其名称作为$文件名,我会得到相同的结果。 我已经validation在任务pipe理器中没有Excel.exe的实例。 奇怪的是,如果我使用get-content,我没有任何问题。 另外,如果我制作一个新的电子表格,我没有任何问题。 $fileName = "c:\reports\1.xlsx" $xl = get-content $spreadsheet […]