Visual basic:查找打开的Excel文件并将其选中

Visual basic:查找打开的Excel文件并将其选中,excel,csv,vba,Excel,Csv,Vba,我希望VBA查找名为“yyyymmdorders.csv”的文件并选择该文件 因此,当打开“20140522orders.csv”时,它应该会找到该文件 这是我的代码: Sub controle() Dim intSrcColNr As Integer Dim strSheetname As String Dim strWorkbookname As String Dim strCsv As String Dim wkb As Workbook

我希望VBA查找名为“yyyymmdorders.csv”的文件并选择该文件

因此,当打开“20140522orders.csv”时,它应该会找到该文件

这是我的代码:

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文件中查找yyyymmdorders.csv:

For Each wkb In Workbooks
    If InStr(1, wkb.Name, "Orders.csv") <> 0 Then
        strCsv = wkb.Name
    End If
Next
如果csv文件未打开

    CSVerror:
    MsgBox "File: " & strCsv & ".csv not open"
    Sheets("procédure").Select
End Sub
虽然我打开了CSV文件,但它显示错误:“文件:20140522Orders.CSV.CSV未打开”


我错过了什么?或者有其他方法可以做到这一点吗?

您遗漏了一些东西:如果您将一行标记为
CSVError
,这并不意味着代码在那里执行/直到
结束子项才执行。如果需要以这种方式处理错误,可以在
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

除非未打开csv文件。
表示某些代码,否则例程将直接从
激活
显示错误消息。如果在此间隙中添加
Debug.Print“Activate OK”
Exit Sub
,则会显示“Acivate OK”而不是错误消息。
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
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