从新报告中提取数据并将特定数据编译到一张Excel工作表中

时间:2019-07-03 17:02:26

标签: vba

您好,我正在尝试创建一个VBA代码,在该代码中我可以自动从新报表中提取特定数据并将其放入首页Excel工作表中。我正在使用Application.getopenfilename来定位文件,但是在运行代码时出现错误问题。当我尝试使用For i = 1 To UBound(FileNames)

时出现不匹配错误

我已经尝试过将dim i更改为整数,但是没有用

Sub AutomateReport()
Dim FileNames As Variant
Application.ScreenUpdating = False
Range("A1").Select
FileNames = Application.GetOpenFilename("top 20(*.xlsx)),*.xlsx", ".xlsx", "Insert Latest Top 20 Report", "Import", MultiSelect = True)
Dim i As Integer
For i = 1 To UBound(FileNames)
    Workbooks.Open FileNames(i)
    Range("A1").Select
    Selection.Copy
    Windows("Book1.xlsm").Activate
    Selection.PasteSpecial Paste:=xlPasteAll, Transpose:=True
    Wokbooks.Open FileNames(i)
    ActiveWorkbook.Close Savechanges:=False
    ActiveCells.Offset(1, 0).Activate
Next i

End Sub

对于不匹配的数据,我一直收到错误13。

1 个答案:

答案 0 :(得分:0)

我认为您在* .xlsx之后有一个额外的“)”,您还需要在多选后加一个冒号,以便一起使用

FileNames = Application.GetOpenFilename("top 20(*.xlsx),*.xlsx", , "Insert Latest Top 20 Report", "Import", MultiSelect:= True) 

它将多选解释为未定义变量,而不是接受参数的参数。

编辑:您还具有一个作为字符串“ .xlsx”的参数,该参数必须为整数或为空。