Vba 从其他工作簿获取数据-嵌套if中未实现目标

Vba 从其他工作簿获取数据-嵌套if中未实现目标,vba,excel,if-statement,Vba,Excel,If Statement,我有一段代码,其中我将多个工作簿中的数据合并到一个工作簿中。每个工作簿的数据需要根据源添加到特定范围。为此,我嵌套了一些IFs,将文件的部分名称作为条件,并提供将值发送到所需范围的操作,但当我运行代码时,它只打开所有工作簿,而不执行任何操作。我已经做了一些研究,没有发现任何东西可以帮助我解决我的问题 Sub Update_Database() Dim directory As String Dim fileName As String Application.ScreenUpdating =

我有一段代码,其中我将多个工作簿中的数据合并到一个工作簿中。每个工作簿的数据需要根据源添加到特定范围。为此,我嵌套了一些IFs,将文件的部分名称作为条件,并提供将值发送到所需范围的操作,但当我运行代码时,它只打开所有工作簿,而不执行任何操作。我已经做了一些研究,没有发现任何东西可以帮助我解决我的问题

Sub Update_Database()

Dim directory As String
Dim fileName As String

Application.ScreenUpdating = False

With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Show
    directory = .SelectedItems(1)
    Err.Clear
End With

fileName = Dir(directory & "\", vbReadOnly)

Dim mwb As Workbook
Set mwb = Workbooks("OEE_Database_Final.xlsm")

Do While fileName <> ""
    On Error GoTo ProcExit
    With Workbooks.Open(fileName:=directory & "\" & fileName, UpdateLinks:=False, ReadOnly:=True)
        If (fileName = "NOM*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O9:Z290").Value = mwb.Sheets("Database").Range("O9:Z290")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "SZE*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O291:Z537").Value = mwb.Sheets("Database").Range("O291:Z537")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "VEC*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O538:Z600").Value = mwb.Sheets("Database").Range("O538:Z600")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "KAY*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O601:Z809").Value = mwb.Sheets("Database").Range("O601:Z809")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "BBL*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O810:Z952").Value = mwb.Sheets("Database").Range("O810:Z952")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "POG*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O953:Z1037").Value = mwb.Sheets("Database").Range("O953:Z1037")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "SC1*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O1038:Z1159").Value = mwb.Sheets("Database").Range("O1038:Z1159")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "SC2*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O1160:Z1200").Value = mwb.Sheets("Database").Range("O1160:Z1200")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "SLP*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O1201:Z1263").Value = mwb.Sheets("Database").Range("O1201:Z1263")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "UIT*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O1264:Z1348").Value = mwb.Sheets("Database").Range("O1264:Z1348")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "ANE*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O1349:Z1823").Value = mwb.Sheets("Database").Range("O1349:Z1823")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "HAL*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O1824:Z2077").Value = mwb.Sheets("Database").Range("O1824:Z2077")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "SHX*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O2078:Z2242").Value = mwb.Sheets("Database").Range("O2078:Z2242")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "BAY*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O2243:Z2415").Value = mwb.Sheets("Database").Range("O2243:Z2415")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "TAM*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O2416:Z2522").Value = mwb.Sheets("Database").Range("O2416:Z2522")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "PUC*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O2523:Z2607").Value = mwb.Sheets("Database").Range("O2523:Z2607")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "JOF*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O2608:Z2648").Value = mwb.Sheets("Database").Range("O2608:Z2648")
            ActiveWorkbook.Close SaveChanges:=False
        ElseIf (fileName = "MAV*.xlsx") Then
            ActiveWorkbook.Sheets("Database").Range("O2649:Z2945").Value = mwb.Sheets("Database").Range("O2649:Z2945")
            ActiveWorkbook.Close SaveChanges:=False
        End If
    End With
    fileName = Dir
Loop

Application.ScreenUpdating = True


ProcExit:
Exit Sub

End Sub
子更新_数据库()
将目录设置为字符串
将文件名设置为字符串
Application.ScreenUpdating=False
使用Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect=False
显示
目录=.SelectedItems(1)
呃,明白了
以
fileName=Dir(目录&“\”,vbReadOnly)
将mwb设置为工作簿
设置mwb=工作簿(“OEE_数据库_Final.xlsm”)
文件名“”时执行此操作
错误转到PROCEXT
打开(文件名:=目录&“\”&fileName,UpdateLinks:=False,只读:=True)
如果(fileName=“NOM*.xlsx”),则
ActiveWorkbook.Sheets(“数据库”).Range(“O9:Z290”).Value=mwb.Sheets(“数据库”).Range(“O9:Z290”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“SZE*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O291:Z537”).Value=mwb.Sheets(“数据库”).Range(“O291:Z537”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“VEC*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O538:Z600”).Value=mwb.Sheets(“数据库”).Range(“O538:Z600”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“KAY*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O601:Z809”).Value=mwb.Sheets(“数据库”).Range(“O601:Z809”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“BBL*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O810:Z952”).Value=mwb.Sheets(“数据库”).Range(“O810:Z952”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“POG*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O953:Z1037”).Value=mwb.Sheets(“数据库”).Range(“O953:Z1037”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“SC1*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O1038:Z1159”).Value=mwb.Sheets(“数据库”).Range(“O1038:Z1159”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“SC2*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O1160:Z1200”).Value=mwb.Sheets(“数据库”).Range(“O1160:Z1200”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“SLP*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O1201:Z1263”).Value=mwb.Sheets(“数据库”).Range(“O1201:Z1263”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“UIT*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O1264:Z1348”).Value=mwb.Sheets(“数据库”).Range(“O1264:Z1348”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“ANE*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O1349:Z1823”).Value=mwb.Sheets(“数据库”).Range(“O1349:Z1823”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“HAL*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O1824:Z2077”).Value=mwb.Sheets(“数据库”).Range(“O1824:Z2077”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“SHX*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O2078:Z2242”).Value=mwb.Sheets(“数据库”).Range(“O2078:Z2242”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“BAY*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O2243:Z2415”).Value=mwb.Sheets(“数据库”).Range(“O2243:Z2415”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“TAM*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O2416:Z2522”).Value=mwb.Sheets(“数据库”).Range(“O2416:Z2522”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“PUC*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O2523:Z2607”).Value=mwb.Sheets(“数据库”).Range(“O2523:Z2607”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“JOF*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O2608:Z2648”).Value=mwb.Sheets(“数据库”).Range(“O2608:Z2648”)
ActiveWorkbook.Close SaveChanges:=False
ElseIf(fileName=“MAV*.xlsx”)然后
ActiveWorkbook.Sheets(“数据库”).Range(“O2649:Z2945”).Value=mwb.Sheets(“数据库”).Range(“O2649:Z2945”)
ActiveWorkbook.Close SaveChanges:=False
如果结束
以
fileName=Dir
环
Application.ScreenUpdating=True
程序出口:
出口接头
端接头
你可以“欺骗”一点,以逃避
选择案例

为了使用
Like
Select
,您可以使用
选择Case True
,然后使用
Like
和通配符
*
嵌套场景

代码

With Workbooks.Open(Filename:=directory & "\" & Filename, UpdateLinks:=False, ReadOnly:=True)
    Select Case True
        Case Filename Like "NOM*.xlsx"

        Case Filename Like "SZE*.xlsx"

        Case Filename Like "VEC*.xlsx"

        Case Filename Like "KAY*.xlsx"

        Case Filename Like "BBL*.xlsx"

        ' put all other scenarios down here....


    End Select

End With
注意:如果您尝试检查的所有文件都是excel文件,因此您不需要添加
.xlsx
扩展名,只需使用
NOM*
SZE*
等。

您可以通过“欺骗”一点来逃避
选择案例

为了使用
Like
Select
,您可以使用
选择Case True
,然后使用
Like
和通配符
*
嵌套场景

代码

With Workbooks.Open(Filename:=directory & "\" & Filename, UpdateLinks:=False, ReadOnly:=True)
    Select Case True
        Case Filename Like "NOM*.xlsx"

        Case Filename Like "SZE*.xlsx"

        Case Filename Like "VEC*.xlsx"

        Case Filename Like "KAY*.xlsx"

        Case Filename Like "BBL*.xlsx"

        ' put all other scenarios down here....


    End Select

End With
注意:如果您尝试检查的所有文件都是excel文件,那么您不需要添加
.xlsx
扩展名,只需我们
Dim mwb As Workbook
Set mwb = Workbooks("OEE_Database_Final.xlsm")
Dim Ws As Worksheet
Set Ws = mwb.Sheets("Database")

Do While Filename <> ""
    On Error GoTo ProcExit
    With Workbooks.Open(Filename:=directory & "\" & Filename, UpdateLinks:=False, ReadOnly:=True)
        Select Case True
            Case Filename Like "NOM*.xlsx"
                Ws.Range("O9:Z290").Value = .Sheets("Database").Range("O9:Z290").Value
                .Close SaveChanges:=False
            Case Filename Like "SZE*.xlsx"
                ' Code for this case
            ' Other cases...
            Case Else
                ' Put code here that is executed if none of the previous names has been matched
                ' or remove 'Case Else' if you don't want anything to happen then
        End Select
    End With
    Filename = Dir
Loop