1. 首页 > 科技

请问以下VBA 为什么只能抓取文件夹里面仅两个工作簿的数据? vba跨工作簿提取数据

请问以下VBA 为什么只能抓取文件夹里面仅两个工作簿的数据?vba跨工作簿提取数据

excel里面我想 用VBA实现调用另一个工作簿中的数据怎么解决

1、点击Excel界面左下角的录制宏按钮录制宏。

2、在【宏名】处输入一个有意义的名称,帮助以后识别该宏的功能。本例按照默认名称命名。选择将宏录制在【个人宏工作簿】并点击【确定】按钮。

3、马上点击Excel界面左下角的停止录制宏按钮停止宏的录制。

4、按Alt+F11打开VBE界面,如下图。

5、在代码部分输入或者粘贴执行某项特定功能的代码。

6、在功能区(Ribbon)上鼠标右键,选择【自定义快速访问工具栏】。

7、向窗体中拖动一个“标签”和一个“按钮”,右击“按钮”,从其扩展菜单中选择“属性”项。

8、双击“获取Excel数据”按钮,在打开的代码编辑窗口中,输入以下代码。

9、双击“Sheet1”工作表,在弹出的代码编辑窗口中输入如下代码。

10、返回Excel表格,激活Sheet1工作表,就可以看到窗口弹出,同时点击“获取Excel数据”按钮,就可以读取Excel中的数据啦。

excel vba 跨工作簿的数据提取

做了两个模拟的表,具体如下。

表1

表2

然后在表1中使用vlookup函数抽取表2的编号,公式=VLOOKUP(B2,Sheet2!A:B,2,0),下拉。

#N/A项为表2中没有的项目,无法抽取。

Excel vba 从另外一个工作簿提取数据 最快的方法

试试这段代码,对应修改:

Sub Macro1()

Dim cnn As Object, SQL$, sh As Worksheet

Set cnn = CreateObject("ADODB.Connection")

cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties ='Excel 8.0;hdr=no';Data Source =" & ThisWorkbook.Path & "\文档2.xls"

For Each sh In Sheets

SQL = "Select f2,f5,f6 from [" & sh.Name & "$a2:f]"

sh.Range("A2:C65536").ClearContents

sh.[a2].CopyFromRecordset cnn.Execute(SQL)

Next

cnn.Close

Set cnn = Nothing

End Sub

EXCEL VBA 获得其它工作薄的数据

h = Range("f65536").End(xlUp).Row + 1

把Sheet1.删除了,这个会特指kkk文件中的Sheet1(在VBA窗口的左上窗口里,没个Sheet都有一个“(Name)",不是”Name",后者是工作表的名字(在Excel里的显示名字),前者是VBA中的名字。