EXCEL中VB编程有关后台处理数据的问题(不是此中高手就不用进了)

怎样不打开工作簿就对里面的数据进行处理呢?例如:C盘下有两个文件1.xls和2.xls,要在2.xls中写一个宏,使sheet(1)中A1的数值等于1.xls中sheet... 怎样不打开工作簿就对里面的数据进行处理呢?
例如:C盘下有两个文件1.xls和2.xls,要在2.xls中写一个宏,使sheet(1)中A1的数值等于1.xls中sheet(1)中A1的数值,要求如下:
1.该命令一定要是在不打开1.xls的前提下进行的,因为这是要应用到一个很大的程序中的,如果不是在后台处理,会使程序很慢
2.该命令越简洁越好,最好是一条语句就搞定
那此例命令该怎样写呢?望此中高手不吝赋教,
最好写的详细点,非常感谢!
展开
 我来答
yjhitxu1132
2010-12-16 · TA获得超过2001个赞
知道小有建树答主
回答量:1735
采纳率:0%
帮助的人:1004万
展开全部
就是在不打开1.xls的情况下取得1.xls的值。这有好几种方法。。。
最简单的方法是使用formula。
Sub sss()
With Worksheets(1).Range("a1")
.Formula = "='" & ThisWorkbook.Path & "\[1.xls]sheet1'!a1"
.Value = .Value
End With
End Sub

使用这个的是要在sheet(1)的名字是sheet1的情况下,如果找不到sheet1工作表他会提示你更新,让你选择工作表。。。我也不知道在不知道1.xls的工作表的名字不知道的情况下该怎么办。。。

另一种方法是使用getobject

Sub try()
Dim Wb
Dim Temp As String
Application.ScreenUpdating = False
Temp = ThisWorkbook.Path & "\1.xls"
Set Wb = GetObject(Temp)
With Wb.Sheets(1).Range("A1")
Range("A1") = .Value
Wb.Close False
End With
Set Wb = Nothing
Application.ScreenUpdating = True
End Sub

用这个方法感觉比较慢。。。没有第一种快。

还有一种就是application.visible=false的方法。。。
我觉得你应该不会采用这种方法。所以就不介绍了。。。

当然也有其它的方法。。。语句会比较长。。。你喜欢简洁的。。复杂的我也不写了。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式