用VBA提取EXcel同一目录中另一个文件的内容

附件中的文件有提取的代码了,但只能在同一个文件中使用,我想将这代码放到另一个文件运行。

就是说在同一个文件有两个文件,010为数据源,然后在这个目录新建一个叫数据提取的文件,将代码放到这个文件运行来提取010的数据
Sub xxx()
Application.Calculation = xlCalculationManual
Sheets("数据提取").Range("A2:K1000").ClearContents
Dim i As Worksheet
For Each i In ThisWorkbook.Sheets
If i.Name <> "中2库存" And i.Name <> "xts" Then
lr = i.Cells(65536, 3).End(xlUp).Row
For j = 5 To lr
If i.Cells(j, "M") <> "√" And i.Cells(j, "k") <> "A0" Then 'M列
b = Sheets("数据提取").Cells(65536, 3).End(xlUp).Row + 1
i.Range("A" & j & ":K" & j).Copy Sheets("数据提取").Cells(b, "A") 'C:L列
Sheets("数据提取").Cells(b, "B") = i.Name
End If
Next
End If
Next
Application.Calculation = xlCalculationAutomatic
End Sub

附件http://pan.baidu.com/s/1nt0Yu7Z

亲,有两个问题确认一下:

    你这个代码貌似是将提取以后的数据,放到了“数据提取”这个Sheet工作表中。那么为什么循环的时候没有跳过这个表呢“i.name<>"数据提取"”? 你的代码:If i.Name <> "中2库存" And i.Name <> "xts"

    你的意思是不是,现在提取出来的数据要放到新建的一个工作簿中,而不是本工作簿的“数据提取”工作表?

    我的建议是:修改一下这段代码,专门放在一个工作簿中。这个工作簿只放程序,运行时打开源数据文件和数据提取文件进行操作。

追问

1、对了,If i.Name "中2库存" And i.Name "xts" 这个是排除的工作表
2、是这个意思
3、就不能在另外的文件中进行提取吗

非常感谢你的回答

追答

可以在另外的文件中提取呀。我再进一步说清楚:
一共需要3个文件:程序文件、原始数据文件、创建的提取数据文件。
我的意思是,代码只放在“程序文件”中,去打开原始数据文件(文件名可以用参数的方法指定),再打开提取数据文件,把数据放进去。

追问

好的,就这样吧,帮我设置一下参数,已提高分数啦

追答

亲,查收附件,代码如下。

原始文件、数据提取文件,都放在程序文件同一个文件夹下。

如下图,程序文件的黄色单元格,填写原始文件的文件名。

在原始文件、数据提取文件都关闭的情况下,点击运行按钮。

 

追问

你好,效果还可以,能不能减少一个文件。在“数据提取源程序”的文件中新建一个叫“数据提取”的工作表,将提取的数据放到这里
当然不能我也选择你的答案,如果能改一下,我会加一下分的,给个回复好吗,谢谢!

追答

OK,改好了。请重新查收附件。程序文件中的“数据提取”表不要删除,因为“原数据文件”中的新建表,其实就是把这个表复制过去的。

追问

程序文件中的“数据提取”表不要删除?为什么这个表运行后是空白的,只能复制到“原数据文件”中的新建表吗,求解答

追答

亲,分两种情况。
一种是原始数据文件中有“数据提取”这个工作表,就比如你的“010.xls”这个文件,本身自带一个,那么程序中就会优先使用这个工作表,清空、填充数据……
还有一种情况,如果你的原始数据文件中没有“数据提取”这个工作表,那么,按你的要求,需要用程序去“新建”,然后再往里面填数据。用程序去新建一个表,填写那么多文字,还要设置格式,太让人抓狂了……所以,程序文件中就带一个“数据提取”工作表的模板,当原始数据文件中没有这个表时,就复制过去,然后填充数据。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网