用于在Excel中为多个文件设置多用户编辑的Powershell脚本?

时间:2018-11-21 19:54:03

标签: excel powershell

我编写了一个代码,尝试通过我的公司服务器,并将所有excel文件(在特定文件夹下)设置为共享,以便多个人可以一次对其进行编辑。这在很长一段时间以来一直是一个问题,我以为我有一个不错的代码来解决此问题,但似乎无法正确访问该属性。有人可以帮忙吗?

$ErrorActionPreference = "Stop"

$root = "P:\A N G"

$excelFiles = Get-ChildItem -path $root -File "*.xlsx" -Recurse 

foreach ($excelFile in $excelFiles.FullName)
{
    $excel = New-Object -ComObject Excel.Application
    $excelWorkBook  = $excel.Workbooks.Open($excelFile) 

    if (!$excelWorkBook.MultiUserEditing)
    { 
        Write-Host   $excelFile     
        $excelWorkBook._SaveAs([Microsoft.Office.Interop.Excel.XlSaveAsAccessMode]::xlShared)
        $excelWorkBook.Close
    }
}

1 个答案:

答案 0 :(得分:0)

在朋友的帮助下,我设法提出了一个解决方案。

$ErrorActionPreference = "Stop"

$root = "P:\A N G"

$excelFiles = Get-ChildItem -path $root -File "*.xlsx" -Recurse 

foreach ($excelFile in $excelFiles.FullName)
{
    $excel = New-Object -ComObject Excel.Application
    $excelWorkBook  = $excel.Workbooks.Open($excelFile) 

    if (!$excelWorkBook.MultiUserEditing)
    { 
        Write-Host $excelWorkBook.FullName   
        $accessMode = [Microsoft.Office.Interop.Excel.XlSaveAsAccessMode]::xlShared
        $xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlWorkbookDefault
        $excelWorkBook.SaveAs($excelWorkBook.FullName,$xlFixedFormat,$null,$null,$null,$null,$accessMode,$null,$null,$null,$null,$null)
        $excelWorkBook.Close
    }
}

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)