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