我编写了一个代码,用于打开包含SQL数据连接的工作表,然后刷新数据,复制值并尝试将该信息粘贴到原始电子表格中。
数据没有粘贴,但是,如果我手动单步执行代码点击F8数据贴 - 我无法弄清楚为什么会这样 -
如果这是一个简单的问题,我很抱歉,我是VBA的新手,我问我的办公室和搜索谷歌 - 仍然找不到答案 - 这里是代码
Sub getdata() “ 'getdata Macro “ '键盘快捷键:Ctrl + a “ '使馆藏报告标签可见并清除内容
Sheets("Holdings Report").Visible = True
Sheets("Holdings Report").Activate
Range("A2:J65536").Select
Selection.ClearContents
'打开原始馆藏报告,刷新数据,复制数据
Workbooks.Open "\\hcc-fileprint\sys\Share\Institutional Group\Rebalancing\HCNet Update.xlsm"
Sheets("Sheet1").Activate
Application.Wait Now + TimeValue("00:00:02")
ActiveWorkbook.RefreshAll
Application.Wait Now + TimeValue("00:00:02")
ActiveWorkbook.RefreshAll
Range("A2:J65536").Select
Selection.Copy
'激活重新平衡电子表格粘贴值,然后隐藏标签
ThisWorkbook.Activate
Sheets("Holdings Report").Activate
Range("A2").Select
ActiveSheet.paste
End Sub
答案 0 :(得分:0)
可能是你实际上没有复制任何内容,因为以RefreshAll开头的数据库查询是在后台运行的,到达Copy时还没有返回任何数据?
我看到你等了2秒钟,但这可能不够长,而单步执行会让Excel有更多时间来获取数据。
不幸的是,似乎没有一个特定的事件可以在RefreshAll完成时做出反应,这将是“正确”的方式。也许Workbook.SheetChange被解雇了;你可以试试。
真的只是在黑暗中拍摄,但复制/粘贴代码本身似乎没有错,你没有说你有任何错误。
答案 1 :(得分:0)
需要修改粘贴命令以粘贴值。
ActiveSheet.PasteSpecial xlPasteValues