我有很多excel文件包含填充的内容,现在我想 有一个主文档,其中包含每个文档的摘要结果。
因此我成像为每个文件输入一行: 姓名 - 地址 - 一些数据......
我想打开每个文件,并将所选单元格中的数据复制到我的主文件中。
我已经发现我可以创建Excel的隐形实例,因此它不会 向用户显示。
如何将数据从A1复制/粘贴到我的工作表中?
Sub Combine()
Fpath = "c:\test\"
Fname = Dir(Fpath & "*.xls")
Dim xl As Excel.Application
Set xl = CreateObject("Excel.Application")
xl.Visible = false
Dim w As Workbook
Dim remoteBook As Workbook
Set remoteBook = xl.Workbooks.Open(Fpath & Fname)
xl.Quit
End Sub
我是VBA的新手,访问方式似乎相当复杂,有更简单的方法 从这些excel文件中获取值?我真的希望有一个简单的解决方案。
更令人烦恼的是调查文件中的VBA宏可以在开放时禁用它们 所以没有提示用户?
谢谢!
答案 0 :(得分:2)
这些问题至少有4个问题,让我们看看我们能做些什么: - )
首先,不需要创建另一个Excel实例,只需将代码添加到空白工作簿中(或者将其添加到主文档中,如果可以的话)
Public Function OpenWorkbook(mypath As String) As Workbook
Workbooks.Open Filename:=mypath
Set OpenWorkbook = ActiveWorkbook
End Function
用法:
Dim wb as workbook, ws as worksheet
set wb = OpenWorkbook("your path")
set ws = wb.Sheets(1)
避免第二个Excel实例自动解决调查文档中任何VBA宏的问题 - 当您从正在运行的宏中打开另一个工作簿时,用户将不会收到任何安全警告。 (顺便说一句,调查文件是否必须包含任何宏?)
将该工作表中的数据复制到工作簿中,如下所示:
ThisWorkbook.Sheets("Name of your sheet").Range("A1") = ws.Range("A1")
描述了对文件夹中的一堆Excel文件的迭代,例如,here
希望有所帮助。
答案 1 :(得分:0)
你走在正确的轨道上。这并不困难,我认为没有更简单的方法从另一个工作簿获取数据。编写一个函数,您可以轻松地重用代码。
如果仅需要编译调查数据的宏,则可以从填写的xls文件中删除宏。否则,您需要修改每台计算机上的安全权限或对项目进行数字签名。