检查如果excel文件是打开的,如果是closures文件,如果没有转换csv文件到excel的Visual Basic
我在创build条件时遇到问题。 请参阅下面的伪代码。 提前致谢
检查文件A.xls是否打开如果文件A.xls打开
Close File A.xls Else Convert File A.csv to .xls End If
将文件A.csv转换为.xls
Dim DeleteEntries As Workbook Dim WorksheetDeleteEntries As Worksheet Dim WbOpen As Boolean 'Convert Acc_FR044_SAP.csv to excel strDir = "C:\FR044 Automated Checker\" strFile = Dir(strDir & "Acc_FR044_SAP.csv") If Workbooks("Acc_FR044_SAP.xls") Is Nothing Then ' IM HAVING AN SUBSCRIPT ERROR IN THIS LINE WbOpen = False Else Workbooks("Acc_FR044_SAP.xls").Close SaveChanges:=False End If Application.DisplayAlerts = False Do While strFile <> "" Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True) wb.SaveAs Replace(wb.FullName, ".csv", ".xls"), FileFormat:=xlExcel8 wb.Close True Set wb = Nothing strFile = Dir Loop
尝试使用适用于当前Excel实例的解决scheme:
On Error Resume Next Dim tmpWB As Workbook Set tmpWB = Workbooks("Acc_FR044_SAP.xls") On Error GoTo 0 If tmpWB Is Nothing Then WbOpen = False Else tmpWB .Close SaveChanges:=False End If
像这样的东西来检查文件是否在任何机器上的任何实例中打开
Sub Sample() Dim bFileOpen As Boolean bFileOpen = IsWorkBookOpen("C:\yourfilename.xlsx") If bFileOpen Then MsgBox "File is open" Else MsgBox "File is Closed" End If End Sub
testingfunction从这里微软的例子
Function IsWorkBookOpen(FileName As String) Dim ff As Long Dim ErrNo As Long On Error Resume Next ff = FreeFile() Open FileName For Input Lock Read As #ff Close ff ErrNo = Err On Error GoTo 0 Select Case ErrNo Case 0 IsWorkBookOpen = False Case 70 IsWorkBookOpen = True Case Else End Select End Function