Vba 使用数组的自动过滤循环

Vba 使用数组的自动过滤循环,vba,excel,loops,autofilter,Vba,Excel,Loops,Autofilter,我调试代码时遇到问题。我有一个数组,它的标准是自动筛选列。我的代码应该在数组中循环,打开一组文件并将粘贴信息复制到工作簿中 当我运行代码时,它不会自动将文件归档到所需的标准,并显示运行时错误1004。我已经试着寻找解决方案或类似的问题,但什么也没找到。我还尝试录制宏以改变方法,但在尝试实现循环时,它不起作用:( 欢迎任何帮助 Sub Update_Database() Dim directory As String Dim fileName As String Dim my_array() A

我调试代码时遇到问题。我有一个数组,它的标准是自动筛选列。我的代码应该在数组中循环,打开一组文件并将粘贴信息复制到工作簿中

当我运行代码时,它不会自动将文件归档到所需的标准,并显示运行时错误1004。我已经试着寻找解决方案或类似的问题,但什么也没找到。我还尝试录制宏以改变方法,但在尝试实现循环时,它不起作用:(

欢迎任何帮助

Sub Update_Database()

Dim directory As String
Dim fileName As String
Dim my_array() As String
Dim iLoop As Integer

ReDim my_array(18)
my_array(0) = "Aneng"
my_array(1) = "Bayswater"
my_array(2) = "Bad Blankenburg"
my_array(3) = "Halstead"
my_array(4) = "Jorf Lasfar"
my_array(5) = "Kolkatta"
my_array(6) = "Marysville"
my_array(7) = "Northeim"
my_array(8) = "Ponta Grossa"
my_array(9) = "Puchov"
my_array(10) = "Renca"
my_array(11) = "Padre Hurtado"
my_array(12) = "Shanxi"
my_array(13) = "San Luis Potosi"
my_array(14) = "Szeged"
my_array(15) = "Tampere"
my_array(16) = "Uitenhage"
my_array(17) = "Veliki Crljeni"

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 <> ""
    For iLoop = LBound(my_array) To UBound(my_array)
        On erro GoTo ProcExit
        With Workbooks.Open(fileName:=directory & "\" & fileName, UpdateLinks:=False, ReadOnly:=True)
            Selection.AutoFilter Field:=1, Criterial:=my_array(iLoop)
            mwb.Worksheets(8).Range("O9:Z2945") = .Worksheets(8).Range("O9:Z2945").Value2
            .Close SaveChanges:=False
        End With
        fileName = Dir
    Next iLoop
Loop

ActiveSheet.ShowAllData

ProcExit:
Exit Sub

End Sub
子更新_数据库()
将目录设置为字符串
将文件名设置为字符串
将我的数组()设置为字符串
Dim iLop作为整数
重拨my_阵列(18)
my_数组(0)=“Aneng”
my_阵列(1)=“Bayswater”
my_数组(2)=“Bad Blankenburg”
my_数组(3)=“Halstead”
my_数组(4)=“Jorf Lasfar”
my_数组(5)=“加尔各答”
my_数组(6)=“Marysville”
my_数组(7)=“Northeim”
my_数组(8)=“Ponta Grossa”
my_数组(9)=“Puchov”
my_数组(10)=“Renca”
my_数组(11)=“Padre Hurtado”
my_数组(12)=“山西”
my_阵列(13)=“圣路易斯波托西”
my_数组(14)=“Szeged”
my_数组(15)=“坦佩雷”
my_数组(16)=“Uitenhage”
my_数组(17)=“Veliki Crljeni”
使用Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect=False
显示
目录=.SelectedItems(1)
呃,明白了
以
fileName=Dir(目录&“\”,vbReadOnly)
将mwb设置为工作簿
设置mwb=工作簿(“OEE_数据库_Final.xlsm”)
文件名“”时执行此操作
对于iLoop=LBound(my_数组)到UBound(my_数组)
关于erro GoTo ProcExit
打开(文件名:=目录&“\”&fileName,UpdateLinks:=False,只读:=True)
Selection.AutoFilter字段:=1,标准:=my_数组(iLoop)
mwb.工作表(8).范围(“O9:Z2945”)=工作表(8).范围(“O9:Z2945”)。值2
.Close SaveChanges:=False
以
fileName=Dir
下一个iLoop
环
ActiveSheet.ShowAllData
程序出口:
出口接头
端接头

erro GoTo…哪一行产生错误?根据您的代码,选择是罪魁祸首。
ReDim my_数组(18)
创建的数组是
my_数组(0到18)
not
my_数组(0到17)
自动筛选参数是
Criteria1:=my_数组(iLoop)
not
Criterial:=my_数组(iLoop)