• 系统环境:Windows 10
  • Excel:2016版本


这个系列集锦一些常用的功能模块,在一些项目中会穿插应用

功能模块中又包括很多子模块,本文涉及的是:非当前Excel文件读写


今天讲讲如何使用VBA对打开的Excel文件进行简单操作



Part 1:获取打开文件信息

  • 在上篇文章中有说道,打开文件后获取两个变量longName,shortName,这两个变量分别存储了打开文件的绝对地址文件名称
  • 以这两个变量作为传入参数,Call一个新的过程,Call File_Insert(longName, shortName)
  • 由于本文目的只是想打开xlsx格式的Excel文件,所以对上篇中的代码进行细微修改,如下:.Filters.Add "Excel文件", "*.xlsx"


图1 工作表截图


Part 2:Excel文件信息获取

  • 以下代码实现的功能:将文件名为被打开的文件.xlsx,工作表名称为数据源中所有数据复制到当前工作簿的Temp工作表。Temp工作表就可以作为后期数据处理的中转站
  • 基本操作过程:
  1. 打开被打开的文件.xlsx文件
  2. 获取数据源工作表
  3. 获取Temp工作表,清空数据
  4. 数据源工作表复制数据
  5. 关闭打开的被打开的文件.xlsx文件
  6. Temp工作表中的行高列宽进行自动调节


图2 导入数据前


图3 导入数据后


Part 3:代码

Sub File_Insert(longName, shortName) Set wb = Workbooks.Open(longName) Set sht1 = wb.Worksheets("数据源") Set shtTemp = ThisWorkbook.Worksheets("Temp") shtTemp.Cells.ClearContents sht1.Cells.Copy Destination:=shtTemp.Range("A1") wb.Close shtTemp.Rows.EntireRow.AutoFit shtTemp.Columns.EntireColumn.AutoFit End Sub


图4 代码截图


Part 4:部分代码解读

  • shtTemp.Cells.ClearContents,清除shtTemp工作表中的内容
  • sht1.Cells.Copy Destination:=shtTemp.Range("A1"),复制数据
    • 整张表的复制起点必须为Range("A1"),否则大小不对应报错
  • shtTemp.Rows.EntireRow.AutoFit,行高自动调节
  • shtTemp.Columns.EntireColumn.AutoFit,列宽自动调节



以上,为本次的介绍内容,下回见。

本文首发于微信公众号:Excel高效办公之VBA。排版和细节略作修改,发于头条