VBA复制并粘贴SQL数据作为Excel电子表格中的值不粘贴

时间:2010-10-06 19:12:31

标签: vba

我编写了一个代码,用于打开包含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

2 个答案:

答案 0 :(得分:0)

可能是你实际上没有复制任何内容,因为以RefreshAll开头的数据库查询是在后台运行的,到达Copy时还没有返回任何数据?

我看到你等了2秒钟,但这可能不够长,而单步执行会让Excel有更多时间来获取数据。

不幸的是,似乎没有一个特定的事件可以在RefreshAll完成时做出反应,这将是“正确”的方式。也许Workbook.SheetChange被解雇了;你可以试试。

真的只是在黑暗中拍摄,但复制/粘贴代码本身似乎没有错,你没有说你有任何错误。

答案 1 :(得分:0)

需要修改粘贴命令以粘贴值。

ActiveSheet.PasteSpecial xlPasteValues