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.该命令越简洁越好,最好是一条语句就搞定
那此例命令该怎样写呢?望此中高手不吝赋教,
最好写的详细点,非常感谢! 展开
例如:C盘下有两个文件1.xls和2.xls,要在2.xls中写一个宏,使sheet(1)中A1的数值等于1.xls中sheet(1)中A1的数值,要求如下:
1.该命令一定要是在不打开1.xls的前提下进行的,因为这是要应用到一个很大的程序中的,如果不是在后台处理,会使程序很慢
2.该命令越简洁越好,最好是一条语句就搞定
那此例命令该怎样写呢?望此中高手不吝赋教,
最好写的详细点,非常感谢! 展开
1个回答
展开全部
就是在不打开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的方法。。。
我觉得你应该不会采用这种方法。所以就不介绍了。。。
当然也有其它的方法。。。语句会比较长。。。你喜欢简洁的。。复杂的我也不写了。。。
最简单的方法是使用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的方法。。。
我觉得你应该不会采用这种方法。所以就不介绍了。。。
当然也有其它的方法。。。语句会比较长。。。你喜欢简洁的。。复杂的我也不写了。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询