可以从Powershell以只读模式启动excel

可以从Powershell以只读模式启动excel,excel,powershell,Excel,Powershell,我使用调用项“some file.xlsx”启动Excel并打开一个文件。现在我想以只读模式打开此文件。这可能来自PowerShell吗 为了便于清理,我不希望打开Excel工作表并将数据从中读取到PowerShell脚本,该脚本旨在帮助用户查找文件并打开它。只读被定义为文件的一个属性。 因此,我的建议是将文件设置为只读,然后使用Invoke项正常打开。 或者,可以使用代码设置文件属性。下面应该可以做到这一点: set-itemproperty "some-file.xlsx" -Name At

我使用
调用项“some file.xlsx”
启动Excel并打开一个文件。现在我想以只读模式打开此文件。这可能来自PowerShell吗


为了便于清理,我不希望打开Excel工作表并将数据从中读取到PowerShell脚本,该脚本旨在帮助用户查找文件并打开它。

只读被定义为文件的一个属性。 因此,我的建议是将文件设置为只读,然后使用Invoke项正常打开。 或者,可以使用代码设置文件属性。下面应该可以做到这一点:

set-itemproperty "some-file.xlsx" -Name Attributes -Value "ReadOnly"   
参考资料:

将文件设置为只读的步骤:

  • 确保文件未在Excel中打开
  • 在Windows开始菜单上,指向程序,指向附件,然后单击Windows资源管理器
  • 在浏览窗口中,打开驱动器或文件夹 包含该文件的
  • 单击文件名
  • 在“文件”菜单上,单击“属性”
  • 单击常规选项卡
  • 选中只读复选框
  • 参考:


    调用项
    仅允许对文件执行默认操作。
    要以只读方式打开文件,请执行以下任一操作:

    • 设置文件的只读属性,启动文件,取消设置只读属性

      attrib +r "some-file.xlsx"
      Invoke-Item "some-file.xlsx"
      attrib -r "some-file.xlsx"
      

    • 直接调用excel,将/r作为命令文件传递

      $xl = (Get-ItemProperty -Path HKCR:\Applications\EXCEL.EXE\Shell\OpenAsReadOnly\command).'(default)'
      $fle = '"some-file.xlsx"'
      & $xl $fle
      

    检查以获得适用于您的语法

    我不使用powershell,但这是您正在尝试的吗
    $objWorkbook=$objExcel.Workbooks.Open($excelfile,2,$True)
    否,我尝试了
    调用项“some file.xlsx”
    。我认为$objExcel.Workbooks.Open()将仅在te PowerShell脚本的范围内打开Excel文件。关闭PowerShell将关闭Excel工作表。您建议的此COM+方法通常会导致错误,如使用“0”参数调用“Add”时出现
    异常:“旧格式或无效类型库”。(HRESULT的例外:0x80028018
    。此错误有一个解决方法,但它是大量COM+篡改。我希望有一种非COM+的方法来完成此操作。感谢您的详细回答。答案解释了如何使文件只读。这与在Excel的只读模式下打开文件有点不同。第一个将为所有用户标记文件为只读,第二个是e Later将指示Excel以只读模式打开文件,使其他用户可以编辑该文件,并防止Excel向用户询问Excel工作表的密码。由于Jan H指出的原因,此答案可能应被删除。如果用户不抱怨,它将无法在任何实际生产环境中实施稍后。谢谢,我想使用excel.exe方法,但我认为没有简单的方法可以找到MSOffice垃圾箱的路径。它在注册表中-我添加了获取注册表项的命令。我没有在powershell中执行任何变量,因此我不需要100%的QuotesHanks来获得这个好的解决方案。能够像这样浏览注册表。我添加了一行代码来制作HKCR:drive。不幸的是,我认为mu机器上有问题,安装了Excel 2010,但您提到的注册表项不可用。还有其他像in和不适用于我的键。HKCR是HKey_Classes_Root的缩写。使用microsofts answer,您可以首先将clsid设置为
    HKLM:\Software\Classes\Excel.Application\clsid\(默认值)
    ,然后使用该clsid查找
    HKLM:\Software\Classes\clsid\$clsid\LocalServer32\(默认值)
    @JanH通常Office路径也在path环境变量中,因此只需键入
    Excel.exe
    即可。