- 系统环境: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工作表就可以作为后期数据处理的中转站
- 基本操作过程:
- 打开被打开的文件.xlsx文件
- 获取数据源工作表
- 获取Temp工作表,清空数据
- 从数据源工作表复制数据
- 关闭打开的被打开的文件.xlsx文件
- 对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。排版和细节略作修改,发于头条