文科生自学VBA-跨Excel文件复制和移动目标数据

--人生不是赛场,梦想不容退场,学习编程成就更好的自己--

微软公司Office软件在商业办公领域一直占据着主流和主导地位,其中Excel在数据处理和分析领域有着强大的影响力,大部分人在经历几年职场历练后可以熟练的使用Excel函数透视表功能,基本可以轻松完成绝大多数工作和任务。但实际上Office的强大和独特之处还在于VBA,因为VBA能够胜任好多个性化二次开发,减少重复机械劳动从而实现办公自动化,开发效率高且开发周期短,尤其对于Excel重度使用者来说会了VBA简直就是如虎添翼啊!!!(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学VBA遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

使用Excel处理数据时往往需要调用和提取其他Excel文件中的数据,那么如何通过VBA来直接调取相关数据呢?今天就通过一个简单的案例给大家介绍一下,下面看看具体需求场景:

在指定路径中打开当前Excel文件VBA,并查看名为COPY的SHEET页

文科生自学VBA-跨Excel文件复制和移动目标数据

任务来了!!!如何直接调取相同文件路径内另一个文件Medals的Details页--"奥运奖牌数据"到当前打开的COPY页里呢?另外移动后还要以金牌数排序。

文科生自学VBA-跨Excel文件复制和移动目标数据

如何解决呢?简单来讲分两三步:第一步-先删除COPY页中所有数据;第二步-在不打开目标文件的情况下直接调取和复制数据过来;第三步-对调取过来的数据进行排序处理。

删除原有不需要的数据:

首先普及一下VBA删除数据基础知识,主要分为两类情况:一类使用Cells.ClearContents只删除数据内容而相关格式还保留,另一类使用Cells.Delete删除所有数据包括其内容和格式等,如下:

以删除下面内容为例:

文科生自学VBA-跨Excel文件复制和移动目标数据

使用Cells.ClearContents方法效果如下

文科生自学VBA-跨Excel文件复制和移动目标数据

使用Cells.Delete方法效果如下

文科生自学VBA-跨Excel文件复制和移动目标数据

通过VBA调取目标文件,并把指定数据移动过来并排序如下:

核心代码如下,主要使用了Set方法打开目标Excel文件,并使用ThisWorkBook找到原本打开的Excel文件,从结果可以看到目标数据内容和格式都复制过来了,完美!!!排序部分在之前的基础知识VBA1.2讲过,这里就不再赘述了。

Dim Wkb As Workbook '定义一个Workbook变量
Set Wkb = Workbooks.Open("E:DATA4SEP21-VBAMedals.xlsm") '打开指定Workbook
'移动另外一个Workbook中的指定数据到当前Workbook中
Wkb.Sheets("Details").Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets("COPY").Range("A1")
Wkb.Save '保存打开的Workbook
Wkb.Close '关闭打开的Workbook
文科生自学VBA-跨Excel文件复制和移动目标数据

代码汇总如下:

Sub GetDataClearWithClear() '删除指定Sheet中的数据内容
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Clear").Select
Cells.ClearContents 'Cells.ClearContents 只删除内容不删除格式
Application.ScreenUpdating = False
End Sub

Sub GetDataClearWithDelete() '删除指定Sheet中的所有数据
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Clear").Select
Cells.Delete '注意Delete删除所有数据包括其格式
Application.ScreenUpdating = False
End Sub

Sub GetDataFrmAnotherWorkBook() '获取另外一个Workbook数据并复制移动到当前文件指定Sheet中
Application.ScreenUpdating = False
ThisWorkbook.Sheets("COPY").Select '选择当前Workbook指定的Sheet
Cells.Delete '注意:Delete删除所有数据包括其格式
Dim Wkb As Workbook '定义一个Workbook变量
Set Wkb = Workbooks.Open("E:DATA4SEP21-VBAMedals.xlsm") '打开指定Workbook
'移动另外一个Workbook中的指定数据到当前Workbook中
Wkb.Sheets("Details").Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets("COPY").Range("A1")
Wkb.Save '保存打开的Workbook
Wkb.Close '关闭打开的Workbook
ThisWorkbook.Sheets("COPY").Select '选择当前Workbook指定的Sheet
Set rng = ActiveSheet.Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)) '对当前移动的数据进行重新排序
rng.Sort Key1:=ActiveSheet.Range(Range("C2"), Range("C2").End(xlDown)), Order1:=xlDescending
Application.ScreenUpdating = False
End Sub

是不是感觉跨Excel文件调取数据并不是多复杂呢?如果平时需要经常重复打开多个Workbook提取数据就不要再手动一个一个点开做了,赶紧让VBA来解决这些重复劳动吧!!!

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!

展开阅读全文

页面更新:2024-04-22

标签:微软公司   目标   文件   数据   变量   赛场   基础知识   路径   成就   定义   领域   代码   格式   方法   内容   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top