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

--人生不是赛场,梦想不容退场,学习编程成就更好的自己--
微软公司Office软件在商业办公领域一直占据着主流和主导地位 , 其中Excel在数据处理和分析领域有着强大的影响力,大部分人在经历几年职场历练后可以熟练的使用Excel函数透视表功能,基本可以轻松完成绝大多数工作和任务 。但实际上Office的强大和独特之处还在于VBA,因为VBA能够胜任好多个性化二次开发,减少重复机械劳动从而实现办公自动化,开发效率高且开发周期短,尤其对于Excel重度使用者来说会了VBA简直就是如虎添翼?。。。?b>(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学VBA遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平 。
使用Excel处理数据时往往需要调用和提取其他Excel文件中的数据,那么如何通过VBA来直接调取相关数据呢?今天就通过一个简单的案例给大家介绍一下,下面看看具体需求场景:
在指定路径中打开当前Excel文件VBA,并查看名为COPY的SHEET页

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

任务来了?。。∪绾沃苯拥魅∠嗤募肪赌诹硪桓鑫募﨧edals的Details页--"奥运奖牌数据"到当前打开的COPY页里呢?另外移动后还要以金牌数排序 。
文科生自学VBA-跨Excel文件复制和移动目标数据

如何解决呢?简单来讲分两三步:第一步-先删除COPY页中所有数据;第二步-在不打开目标文件的情况下直接调取和复制数据过来;第三步-对调取过来的数据进行排序处理 。
删除原有不需要的数据:
【文科生自学VBA-跨Excel文件复制和移动目标数据】首先普及一下VBA删除数据基础知识,主要分为两类情况:一类使用Cells.ClearContents只删除数据内容而相关格式还保留,另一类使用Cells.Delete删除所有数据包括其内容和格式等,如下:
以删除下面内容为例:
文科生自学VBA-跨Excel文件复制和移动目标数据

使用Cells.ClearContents方法效果如下
文科生自学VBA-跨Excel文件复制和移动目标数据

使用Cells.Delete方法效果如下
文科生自学VBA-跨Excel文件复制和移动目标数据

通过VBA调取目标文件 , 并把指定数据移动过来并排序如下:
核心代码如下,主要使用了Set方法打开目标Excel文件,并使用ThisWorkBook找到原本打开的Excel文件 , 从结果可以看到目标数据内容和格式都复制过来了,完美?。。∨判虿糠衷谥暗?b>基础知识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 '保存打开的WorkbookWkb.Close '关闭打开的Workbook
文科生自学VBA-跨Excel文件复制和移动目标数据

代码汇总如下:
Sub GetDataClearWithClear() '删除指定Sheet中的数据内容Application.ScreenUpdating = FalseThisWorkbook.Sheets("Clear").SelectCells.ClearContents 'Cells.ClearContents 只删除内容不删除格式Application.ScreenUpdating = FalseEnd SubSub GetDataClearWithDelete() '删除指定Sheet中的所有数据Application.ScreenUpdating = FalseThisWorkbook.Sheets("Clear").SelectCells.Delete '注意Delete删除所有数据包括其格式Application.ScreenUpdating = FalseEnd SubSub GetDataFrmAnotherWorkBook() '获取另外一个Workbook数据并复制移动到当前文件指定Sheet中Application.ScreenUpdating = FalseThisWorkbook.Sheets("COPY").Select '选择当前Workbook指定的SheetCells.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 '保存打开的WorkbookWkb.Close '关闭打开的WorkbookThisWorkbook.Sheets("COPY").Select '选择当前Workbook指定的SheetSet rng = ActiveSheet.Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)) '对当前移动的数据进行重新排序rng.Sort Key1:=ActiveSheet.Range(Range("C2"), Range("C2").End(xlDown)), Order1:=xlDescendingApplication.ScreenUpdating = FalseEnd Sub
是不是感觉跨Excel文件调取数据并不是多复杂呢?如果平时需要经常重复打开多个Workbook提取数据就不要再手动一个一个点开做了 , 赶紧让VBA来解决这些重复劳动吧?。。?
END
我为人人,人人为我?。』队蠹夜刈ⅲ?点赞和转发?。。?/b>
~~人生不是赛?。蜗氩蝗萃顺~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己?。。?/b>

相关经验推荐