VBA自动化:筛选Oracle报表并粘贴到Excel特定工作表

需积分: 12 0 下载量 25 浏览量 更新于2024-08-04 收藏 2KB TXT 举报
"VBA筛选多张Oracle导出报表并粘贴到指定表格" 这个VBA脚本的主要目的是帮助财务人员或其他用户自动化处理多个Oracle数据库导出的Excel报表,并将筛选后的数据粘贴到特定的工作表中。脚本中包含了以下几个关键知识点: 1. **变量声明**: - `mth`:存储当前月份的日期信息,用于在工作表名称中引用。 - `detn`:定义了包含所有报表的文件夹路径。 - `filenm`:定义了目标工作簿的文件名。 - `Data(1 to 8)`:定义了8个不同的文件名前缀,每个前缀代表一个不同的报表。 2. **文件路径和名称构造**: - 使用`Format(Now(), "format")`函数来获取当前日期并按照指定格式(如“yyymm”或“mmmyyyy”)进行格式化,以便构建文件名和路径。 3. **打开和激活工作簿**: - `Workbooks.Open Filename:=_` 用于打开指定路径和文件名的工作簿。 - `Workbooks(filenm).Activate` 和 `Sheets(Format(Now()-31,"yyyy.mm")&"AP").Activate` 激活目标工作簿和工作表。 4. **清除现有数据**: - `Range([A2],[X2].End(xlDown)).Clear` 清除指定范围内的数据。 5. **关闭显示警告**: - `Application.DisplayAlerts=False` 关闭应用的显示警告,使得在执行操作时不会出现提示对话框。 6. **循环处理多个报表**: - `For i = 1 To 8` 循环遍历8个不同的报表。 - `Workbooks.Open Filename:=_` 打开每个报表。 - `Sheets("214001").Activate` 激活报表中的特定工作表。 7. **数据筛选**: - `ActiveSheet.Range("A1").CurrentRegion.AutoFilter` 应用自动筛选到当前区域。 - `Application.WorksheetFunction.CountIf` 计算满足特定条件的单元格数量。 - `ActiveSheet.Range([A1],[X1].End(xlDown)).AutoFilterField:=7, Criteria1:=_` 和 `Operator:=xlAnd` 筛选出不等于"CNY"的数据。 8. **复制和粘贴数据**: - 如果筛选后满足条件的行数大于1,将筛选后的数据复制并粘贴到目标工作表。 9. **关闭源工作簿**: - 在处理完每个报表后,使用 `Workbooks(Data(i)).Close SaveChanges:=False` 关闭报表,但不保存更改。 通过这个VBA脚本,用户可以极大地提高工作效率,自动完成复杂的数据筛选和整合任务,减少了手动操作的时间和错误。对于处理大量数据和报表的财务人员来说,这是一个非常实用的工具。