目录
示例
如图所示,在“数据库.xlsx”工作簿中存有“销售数据”,在相同目录下的工作簿 希望能够将该工作簿中该工作表中的数据读入以便进行下一步操作。该如何用VBA完成?
销售经理 | 区域 | 销售数量 |
张万斌 | 崇州区 | 960 |
张万斌 | 大丰区 | 960 |
张万斌 | 新繁区 | 160 |
马秉局 | 天河区 | 160 |
王建华 | 崇州区 | 960 |
王建华 | 彭州区 | 1600 |
欧阳才镛 | 武侯区 | 1280 |
欧阳才镛 | 天河区 | 100 |
欧阳才镛 | 大丰区 | 1600 |
何月 | 大丰区 | 720 |
张一 | 大丰区 | 400 |
何月 | 天河区 | 143 |
王建华 | 大丰区 | 1040 |
张一 | 武候区 | 1280 |
实现代码
Option Explicit
Sub 跨工作薄读取数据()
Dim wbkThis As Workbook
Dim wbkOpen As Workbook
Set wbkThis = thisbook
Set wbkOpen = Workbooks.Open(wbkthisbook.Path & "\数据库.xlsx")
'把打开的工作薄中的第1个工作表的内容复制到当前工作薄中
wbkOpen.Worksheets(1).Cells.Copy wbkThis.Worksheets(1).Range("A1")
'关闭工作蔳且不保存
wbkOpen.Close False
End Sub
打开关闭的工作簿
当工作簿关闭时,可以利用Workbooks的Open方法打开,其语法为:
Workbooks.Open(
FileName,
UpdateLinks,
ReadOnly,
Format,
Password,
WriteResPassword,
IgnoreReadOnlyRecommended,
Origin,
Delimiter,
Editable,
Notify,
Converter,
AddToMru,
Local,
CorruptLoad)
该方法可以返回一个工作簿对象(Workbook)。
- 参数FileName为必选参数,可以输入一个文本,表示需要打开的工作簿完整路径。该完整路径应包括完整的盘符、路径和文件名。
- 可选参数UpdateLinks表示是否更新外部数据。当其省略时,则在打开工作簿时Excel会提示用户是否更新。该参数可以指定值为0(不更新外部链接)或者3(更新外部链接)。
- 可选参数ReadOnly表示以只读方式打开工作簿,当其为True时,表示以只读方式打开工作簿。
- 可选参数Format表示当打开的文件为文本文件时,该文件以何种标点作为分隔符。该参数可以为表中的任意值。
WorkBooks集合Open方法Format参数
值 |
分隔符 |
1 |
制表符 |
2 |
逗号 |
3 |
空格 |
4 |
分号 |
5 |
无 |
6 |
自定义分隔符(可以设置Delimiter参数) |
- 可选参数Password为文本,表示工作簿打开的密码(最长不超过15位)。
- 可选参数WriteResPas sword为文本,表示工作簿写保护的密码。当设置了该参数后,打开文件时必须提供密码才可以编辑,否则文件为只读。
- 可选参数IgnoreReadOnlyRecommended为逻辑值,当为True时,则在打开文件时会有忽略只读建议的提示框。
- 可选参数Origin表示当打开文本文件时,其适用的操作系统,可以为xIMacintosh、xIWindows或者xIMSDOS。
- 可选参数Delimiter表不当打开固定分隔符的文本文件时,若指定Format参数为6(用户自定义)时所选用的分隔符,则可以是长度为1的一个文本。
- 可选参数Editable表示打开加载宏文件或者模板文件时是否可见,当为True时表示可见。
- 可选参数Notify为True时,表示当Excel无法以读写模式打开文件时会将文件加入提示列表并发出警告提示。
- 可选参数Converter表示是否转换文件格式。
- 可选参数AddToMru表不是否加入最近的文件列表,当为True时表示加入。
- 可选参数Local为逻辑值,表示存储文件的语言设置,当为True时,表示按照控制面板中的设置保存,当为False时,表示按照VBA工程的语言设置保存。
- 可选参数CorruptLoad表示打开文件的模式,可以为xINormaILoad(普通)、xIRepairFile(修复文件)或者xIExtractData(数据压缩模式)。
一般情况下,打开工作簿只需设置工作簿的完整路径即可。在打开工作簿后,由于Open方法可以返回一个工作簿对象。因而一般将Open方法的返回值赋值给一个工作簿对象变量,以便进行下一步操作。
当需要跨工作簿复制工作表中单元格的内容时,则必须使用单元格的完整表示,以描述所要访问的单元格属于哪个工作表或哪个工作簿。否则,程序将会认为缺省的描述部分为当前工作簿或当前工作表。