欢迎来到天天文库
浏览记录
ID:50128168
大小:28.50 KB
页数:2页
时间:2020-03-04
《Excel VBA——从外部工作簿取数的5种方法(原创整理).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Excel VBA——从外部工作簿取数的5种方法(原创整理)(2011-02-2514:17:58)ExcelVBA——从外部工作簿取数的5种方法(原创整理)======================================================='1、循环单元格取数,效率最低,不可取,初学者易犯'2、区域相等取数'3、复制粘贴取数'4、借助数组取数——以上4种都需要打开外部工作簿'5、宏表函数取数(不打开工作簿)======================================================
2、=PrivateSubGetValueFromOpenedWorkbook()'打开工作簿取数 MyWorkbookAsWorkbook DimMyArryAsVariant SetMyWorkbook=Application.Workbooks.Open("D:DocumentsandSettingsAdministrator.DATACENTER3.000桌面我的工作表.xlsx") '方法1: ' DimiAsInteger,jAsInteger ' n2=MyWorkbook.Sheets.C
3、ount ' Fori=7To56 ' Forj=4To10 ' Sheets("我的工作表").Cells(i,j)=MyWorkbook.Sheets("我的工作表").Cells(i,j) ' Nextj ' Nexti '方法2: ' ThisWorkbook.Sheets("我的工作表").Range("d5:j56").Value=MyWorkbook.Sheets("我的工作表").Range("d5:j56").Value '方法3:
4、 ' ThisWorkbook.Sheets("我的工作表").Range("d5:j56").Copy ' MyWorkbook.Sheets("我的工作表").Range("d5").PasteSpecialPaste:=xlPasteValues '方法4: MyArry=MyWorkbook.Sheets("我的工作表").Range("d5:j56").Value ThisWorkbook.Sheets("我的工作表").Range("d5:j56")=MyArry MyWorkbook.CloseSa
5、veChanges:=False SetMyWorkbook=NothingEndSub'方法5:SubGetValueFromClosedWorkbook()'不用打开工作簿取数 p="C:DocumentsandSettingsAdministrator.DATACENTER3.000桌面" f="我的工作表.xlsx" s="我的工作表" Application.ScreenUpdating=False Forr=7To56 Forc=4To10 a=Cells(r,c).
6、Address Cells(r,c)=GetValue(p,f,s,a) Nextc Nextr Application.ScreenUpdating=TrueEndSubPrivateFunctionGetValue(path,file,sheet,ref)' 从未打开的Excel文件中检索数据 DimargAsString ' 确保该文件存在 IfRight(path,1)<>""Thenpath=path&"" IfDir(path&file)=""Then Ge
7、tValue="FileNotFound" ExitFunction EndIf ' 创建变量 arg="'"&path&"["&file&"]"&sheet&"'!"&_ Range(ref).Range("A1").Address(,,xlR1C1) ' 执行XLM宏 GetValue=ExecuteExcel4Macro(arg)EndFunction
此文档下载收益归作者所有