VBA自动化:筛选Oracle报表并粘贴到Excel特定工作表
需积分: 12 137 浏览量
更新于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脚本,用户可以极大地提高工作效率,自动完成复杂的数据筛选和整合任务,减少了手动操作的时间和错误。对于处理大量数据和报表的财务人员来说,这是一个非常实用的工具。
117 浏览量
点击了解资源详情
1140 浏览量
3224 浏览量
126 浏览量
2009-04-25 上传
2019-03-15 上传
2012-01-27 上传
117 浏览量
apple_73038271
- 粉丝: 0
- 资源: 1