Visual Basic:查找打开的Excel文件并select它

我希望VBA查找名称为“YYYYMMDDorders.csv”的文件并select该文件。

所以当打开“20140522orders.csv”时,应该find那个文件。

这是我的代码:

Sub controle() Dim intSrcColNr As Integer Dim strSheetname As String Dim strWorkbookname As String Dim strCsv As String Dim wkb As Workbook Application.ScreenUpdating = False strSheetname = ActiveSheet.Name strWorkbookname = ActiveWorkbook.Name 

在打开的Excel文件中查找YYYYMMDDOrders.csv:

 For Each wkb In Workbooks If InStr(1, wkb.Name, "Orders.csv") <> 0 Then strCsv = wkb.Name End If Next 

selectCSV文件:

 On Error GoTo CSVerror Windows(strCsv).Activate 

如果csv文件没有打开。

  CSVerror: MsgBox "File: " & strCsv & ".csv not open" Sheets("procédure").Select End Sub 

虽然我打开了CSV文件,但是却显示错误:“File:20140522Orders.csv.csv not open”。

我在这里错过了什么? 还是有另一种方法来做到这一点?

你遗漏了一些东西:如果你将一行标记为CSVError那么这并不意味着代码将被执行,直到没有被执行,直到End Sub 。 如果你需要这样处理错误,你可以在CSVError行之前插入一个End ,这样如果文件被打开,程序就会在那里停止,否则就跳到CSVError并停在End Sub

 Sub controle() Dim intSrcColNr As Integer Dim strSheetname As String Dim strWorkbookname As String Dim strCsv As String Dim wkb As Workbook Application.ScreenUpdating = False strSheetname = ActiveSheet.Name strWorkbookname = ActiveWorkbook.Name For Each wkb In Workbooks If InStr(1, wkb.Name, "Orders.csv") <> 0 Then strCsv = wkb.Name End If Next On Error GoTo CSVerror Windows(strCsv).Activate End CSVerror: MsgBox "File: " & strCsv & " not open" Sheets("procédure").Select End Sub 

更好的是不处理一个错误,但If / Else Orders.csv永远不会出现的可能性:

 For Each wkb In Workbooks If InStr(1, wkb.Name, "Orders.csv") <> 0 Then strCsv = wkb.Name End If Next If strCsv = "" Then MsgBox "File: " & strCsv & " not open" Sheets("procédure").Select Else Windows(strCsv).Activate End If