检查如果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