我想写了一个代码,将当前打开的A工作簿的数据写入另外一个B工作簿中,但是不打开B工作簿。
我知道可以用getobject来实现:在不打开B工作簿的情况下将B工作簿的数据引用至A工作簿中, 但是反过来,能不能在不打开B工作簿的前提下将数据写入到B工作簿中呢? 急急急~~~
高手如果可以回答,麻烦按这个例子来写出简单的代码:将A工作簿的A1单元格的数据写入至B工作簿的B2单元格中,但是并不在后台或界面中打开B工作簿
重重有赏~~~
getobject其实也打开了文件的,只是新窗口隐藏而已,理论上查看和修改任何文件都必须得先打开。
用getobject不变调试,建议用常规方法处理,可以打开的时候停止屏幕显示,例如:
Application.ScreenUpdating = False
Set wb = Workbooks.Open("b.xls")
wb.Sheets(1).Cells(2, 2) = "xxx" '只是一个举例,因为不知道你现有变量的名称,怎么操作都是可以的
wb.save
wb.Close
Application.ScreenUpdating = True追问
用getobject不变调试,建议用常规方法处理,可以打开的时候停止屏幕显示,例如:
Application.ScreenUpdating = False
Set wb = Workbooks.Open("b.xls")
wb.Sheets(1).Cells(2, 2) = "xxx" '只是一个举例,因为不知道你现有变量的名称,怎么操作都是可以的
wb.save
wb.Close
Application.ScreenUpdating = True追问
谢谢你,我目前代码也是这么写,不过就没有 Set wb = Workbooks.Open("b.xls")
这一句。
然后运行之后,被写入的文件(B工作簿)再也打不开了,提示说存在隐含的风险(其实是打得开,只是界面怎么也找不到这个工作簿B了)
调试程序的时候把Application.ScreenUpdating = False语句注释了,观察具体每个步骤的执行情况。
追问你好。 我调试了,但是读取了B工作簿的地址后,继续执行下面语句(也即为工作簿B的单元格赋值)没法看到B工作簿的变化阿,因为此时的B工作簿只在后台打开,在界面中却没法显示~~~
以下图是在不打开工作簿B的情况下执行完VBA语句后,重新打开工作簿B时弹出的提示框,望指导:
这个原因你应该明白吧,你这个文件里面有自动连接,你鼠标双击打开也会出这个警告,试试看下面的语句能否解决:
Application.DisplayAlerts = False
温馨提示:答案为网友推荐,仅供参考