开发者社区> 问答> 正文

如果Excel文件事先手工打开,在RPA流程中再次打开并写入的时候,就会提示只读文件,无法写入而出错

如果Excel文件事先手工打开,在RPA流程中再次打开并写入的时候,就会提示只读文件,无法写入而出错。 如果文件是用WPS打开的,在流程中杀进程真的杀不掉,希望有一个判断文件是否打开的组件?

展开
收起
cuicuicuic 2023-05-25 11:54:37 120 0
来自:阿里云RPA
1 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    关于判定Excel文件是否已经被打开的问题,可以在RPA流程中使用以下两种方法:

    使用Windows Powershell脚本: 首先,需要检查是否有Excel进程正在运行,检查方式可以通过Windows Powershell脚本完成:

    Get-Process excel | Where-Object {$_.MainWindowTitle} | Select-Object MainWindowTitle 这个命令会查找正在运行的Excel进程的主窗口标题,如果找到任何一个与Excel有关的进程,则可以判定Excel文件已经被打开了。我们可以将这个命令封装为一个“运行脚本”的组件。

    使用VBA宏: 另外一个方法是在Excel中嵌入一个VBA宏,它可以在文件被打开时自动运行,并将文件属性设置为只读。在RPA流程中尝试写入该文件时,它将会产生一个错误,提示该文件为只读。这个宏可以使用以下代码实现:

    Private Sub Workbook_Open() If Not IsFileClosed(ThisWorkbook.FullName) Then ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly End If End Sub

    Function IsFileClosed(strFileName As String) As Boolean Dim fileNo As Integer, errNo As Integer

    On Error Resume Next
    fileNo = FreeFile()
    Open strFileName For Binary Access Read Write Lock Read Write As #fileNo
    Close fileNo
    errNo = Err
    On Error GoTo 0
    
    If errNo = 0 Then
        IsFileClosed = True
    Else
        IsFileClosed = False
    End If
    

    End Function 这个宏将检查文件是否已被打开。如果文件已经被打开,则宏将被阻止并将文件属性设置为只读。在RPA流程中,如果尝试写入该文件,则会产生一个错误,并提示该文件被设置为只读。

    以上两种方法可以用于在RPA流程中判定Excel文件是否已被打开,以确保文件能够被正确地写入。

    2023-05-25 15:34:33
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
+ 订阅
阿里云RPA历经8年的内部验证,覆盖了阿里巴巴大部分BU,实现了电商客服、新零售等新兴行业的渗透,并且已经完成在保险、金融、医疗保健等领域的场景深耕,联合合作伙伴具备深度定制化能力和稳定交付能力,积累了丰富的行业可行性解决方案。目前阿里云RPA能集成并运行在更高的软件层级,这就决定了它不会侵入、影响已有的软件系统。在帮助企业提升效能的过程中,保持企业已有的IT系统功能平稳、运行可靠。
问答排行榜
最热
最新

相关电子书

更多
毕马威-阿里云RPA联合方案力助保险业转型 立即下载
《阿里云RPA-引领电商智能提效时代》 立即下载
《阿里云RPA产品介绍4.0》 立即下载

相关实验场景

更多