gpt4 book ai didi

error-handling - VBScript “open all workbooks”错误处理

转载 作者:行者123 更新时间:2023-12-03 08:17:57 24 4
gpt4 key购买 nike

我的VBScript打开文件夹中的所有“xlsm”文件,运行VBA代码“Slim”,然后关闭工作簿(一个一个)。它工作正常,但我在错误处理方面遇到了麻烦。如果该脚本试图打开当前由其他人打开的工作簿,则我将收到错误 pop 对话框Someone else is working in /path + wb-name/ right now. Please try again later.,并且循环将暂停,直到在警告消息上单击OK为止。看来它将打开工作簿没有问题,但是由于VBA代码保存了一个新文件并尝试删除旧文件,因此最终导致错误。因此,我将得到一个新文件,并在错误消息之上添加一个未删除的旧文件。
尽管显然不是理想的解决方案,但是在这种情况下退出整个循环也比等待单击确定更好,因为VBScript是自动启动的。
在这种情况下,我需要构建一个错误处理程序,这样就可以跳过已经打开的文件,并且循环不会中断。不幸的是,DisplayAlerts = False很好,而On Error Resume Next在这里无法做到。
如果可能的话,我想通过VBScript解决此问题,而不是调整VBA代码。

Set fso = CreateObject("Scripting.FileSystemObject")
Set xl = CreateObject("Excel.Application")

On Error Resume Next
xl.DisplayAlerts = False

For Each f In fso.GetFolder("G:\Archive").Files
If LCase(fso.GetExtensionName(f.Name)) = "xlsm" Then

Set wb = xl.Workbooks.Open(f.Path)

xl.Run "Slim"
wb.Close

End If

Next

xl.Quit

Set fso = Nothing
Set xl = Nothing
尝试了不同的场景,到目前为止还没有破解。这是最新的选择,但是没有帮助(检查工作簿当前是否为只读的方式是否不同)?
For Each f In fso.GetFolder("G:\Archive").Files
If LCase(fso.GetExtensionName(f.Name)) = "xlsm" Then

Set wb = xl.Workbooks.Open(f.Path)

If NOT wb.ReadOnly Then

xl.Run "Slim"
wb.Close

Else

wb.Close

End If

End If

Next

最佳答案

如果打开了excel文件,则再次打开该文件将被阻止。重命名文件也被阻止,但是重命名失败不会显示带有resume next的消息框
试试这个代码。它尝试首先重命名文件。如果重命名成功,它将重命名,然后运行宏。如果重命名失败,它将跳过文件。

Set fso = CreateObject("Scripting.FileSystemObject")
Set xl = CreateObject("Excel.Application")

On Error Resume Next
xl.DisplayAlerts = False
For Each f In fso.GetFolder("D:\MikeStuff\StackOverflow\ExcelCheckOpen").Files
If LCase(fso.GetExtensionName(f.Name)) = "xlsm" Then
xpath = f.Path ' file path lost after rename
fso.MoveFile xpath, xpath & ".txt" ' will fail if file locked by excel
if fso.FileExists(xpath & ".txt") Then ' rename worked, file not locked
fso.MoveFile xpath & ".txt", xpath ' rename back
Set wb = xl.Workbooks.Open(xpath)
xl.Run "Slim"
wb.Close
End If
End If
Next

xl.Quit

Set fso = Nothing
Set xl = Nothing

关于error-handling - VBScript “open all workbooks”错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63677033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com