ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx

上传人:b****2 文档编号:13301810 上传时间:2022-10-09 格式:DOCX 页数:6 大小:68.67KB
下载 相关 举报
ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx_第1页
第1页 / 共6页
ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx_第2页
第2页 / 共6页
ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx_第3页
第3页 / 共6页
ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx_第4页
第4页 / 共6页
ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx

《ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx》由会员分享,可在线阅读,更多相关《ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx(6页珍藏版)》请在冰豆网上搜索。

ExcelVBA实例教程#051不打开工作簿取得其他工作簿数据Word下载.docx

\[数据表.xls]Sheet1'

!

4. 

WithSheet1.Range("

A1:

F22"

5. 

 

.FormulaR1C1="

="

Temp&

RC"

6. 

.Value=.Value

7. 

EndWith

8.EndSub

代码解析:

CopyData_1过程在工作表中写入公式引用“数据表”中同一位置单元格中的数据。

第3行代码将引用工作簿的路径赋给变量Temp。

第5行代码在作表中写入公式引用数据。

第6行代码将公式转换为数值。

2、使用GetObject函数

使用GetObject函数来获取对指定的Excel工作表的引用,如下面的代码所示。

1.SubCopyData_2()

DimWbAsWorkbook

Application.ScreenUpdating=False

Temp=ThisWorkbook.Path&

\数据表.xls"

SetWb=GetObject(Temp)

WithWb.Sheets

(1).Range("

A1"

).CurrentRegion

8. 

Range("

).Resize(.Rows.Count,.Columns.Count)=.Value

9. 

Wb.CloseFalse

10. 

EndWith

11. 

SetWb=Nothing

12. 

Application.ScreenUpdating=True

13.EndSub

CopyData_2过程使用GetObject函数来获取“数据表”工作簿中的数据。

第4行代码关闭屏幕更新加快运行速度。

EndSub

CopyData_3过程隐藏Application对象来模拟不打开工作簿取数。

第2行代码使用New关键字隐式地创建一个Application对象。

第6行代码将新创建的Application对象的Visible属性设置为False,使之隐藏。

第7行代码使用Open方法打开“数据表”工作簿(关于Open方法请参阅技巧42,因为工作簿是使用新创建的、隐藏的Application对象打开的,所以在窗口中是不可视的。

第8行到第10行代码将“数据表”工作簿中的第1张工作表已使用区域的数据赋给本工作表的单元格。

第11行代码使用Quit方法退出新打开的Excel程序。

4、使用ExecuteExcel4Macro方法

使用ExecuteExcel4Macro方法可以做到不打开工作簿的情况下获取其他工作薄中指定工作表的数据,如下面的代码所示。

1.SubCopyData_4()

DimRCountAsLong

DimCCountAsLong

DimTemp1AsString

DimTemp2AsString

DimTemp3AsString

DimRAsLong

DimCAsLong

Dimarr()AsVariant

Temp1=Temp&

Rows

(1).Address(,,xlR1C1)

13. 

Temp1="

Counta("

Temp1&

)"

14. 

CCount=Application.ExecuteExcel4Macro(Temp1)

15. 

Temp2=Temp&

Columns("

A"

).Address(,,xlR1C1)

16. 

Temp2="

Temp2&

17. 

RCount=Application.ExecuteExcel4Macro(Temp2)

18. 

ReDimarr(1ToRCount,1ToCCount)

19. 

ForR=1ToRCount

20. 

ForC=1ToCCount

21. 

Temp3=Temp&

Cells(R,C).Address(,,xlR1C1)

22. 

arr(R,C)=Application.ExecuteExcel4Macro(Temp3)

23. 

Next

24. 

Next

25. 

Range("

).Resize(RCount,CCount).Value=arr

26.EndSub

CopyData_4过程使用ExecuteExcel4Macro方法获取“数据表”工作薄中指定工作表的数据。

第14、16行代码使用ExecuteExcel4Macro方法执行Counta函数取得“数据表”工作薄中指定工作表的行数和列数合计。

ExecuteExcel4Macro方法执行一个MicrosoftExcel4.0宏函数,然后返回此函数的结果,语法如下:

expression.ExecuteExcel4Macro(String)

参数expression是可选的,返回一个Application对象。

参数String是必需的,一个不带等号的MicrosoftExcel4.0宏语言函数,所有引用必须是像R1C1这样的字符串。

因为MicrosoftExcel4.0宏不在当前工作簿或工作表的环境中求值,所有的引用都是外部引用,所以无需打开引用工作簿但是需要明确指定工作簿名称。

第18行代码使用ReDim语句为动态数组arr重新分配存储空间。

第19行到第24行代码循环取值,将“数据表”工作薄中指定工作表的数据赋给动态数组arr。

第25行代码将动态数组arr的值赋给工作表的单元格。

5、使用SQL连接

使用SQL建立与工作簿的连接,查询数据记录后复制到当前工作表中,如下面的代码所示。

1.SubCopyData_5()

DimSqlAsString

DimjAsInteger

DimRAsInteger

DimCnnAsADODB.Connection

DimrsAsADODB.Recordset

WithSheet5

.Cells.Clear

SetCnn=NewADODB.Connection

WithCnn

.Provider="

microsoft.jet.oledb.4.0"

.ConnectionString="

ExtendedProperties=Excel8.0;

_

DataSource="

\数据表"

.Open

Setrs=NewADODB.Recordset

Sql="

select*from[Sheet1$]"

rs.OpenSql,Cnn,adOpenKeyset,adLockOptimistic

Forj=0Tors.Fields.Count-1

.Cells(1,j+1)=rs.Fields(j).Name

R=.Range("

A65536"

).End(xlUp).Row

.Range("

R+1).CopyFromRecordsetrs

rs.Close

26. 

Cnn.Close

27. 

Setrs=Nothing

28. 

SetCnn=Nothing

29.EndSub

CopyData_5过程使建立与“数据表”工作簿的连接,查询数据记录后复制到当前工作表中。

第8行代码删除当前工作表的所有数据。

第9行到第15行代码建立与“数据表”工作簿的连接。

第16行到第24行代码查询“数据表”工作簿的全部数据,并复制到工作表中。

其中第20行代码将字段名称(标题行)复制到工作表中,第23行代码将查询到的数据记录复制到工作表。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 唐诗宋词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1