2012-02-21 105 views
0
Dim ws As Worksheet, wbREF As Workbook 
Set ws = ActiveSheet 
Set wbREF = Workbooks.Open("ALSP.xls")  'you may want to put the full path here 

Range("B7:L61").Copy ws.Range("N7")   'copy to original sheet 
wbREF.Close False 

Set ws = ActiveSheet 
Set wbREF = Workbooks.Open("FLSP.xls")  'you may want to put the full path here 

Range("B7:L61").Copy ws.Range("Z7")   'copy to original sheet 
wbREF.Close False 

Set ws = ActiveSheet 
Set wbREF = Workbooks.Open("GASP.xls")  'you may want to put the full path here 

Range("B7:L61").Copy ws.Range("AL7")   'copy to original sheet 
wbREF.Close False 

我现在用的这个宏伟大的工程。我的问题是关于其中有公式的工作手册“GASP”。这marco不复制我需要的价值。任何人都可以提出解决办法。由于Excel 2010中粘贴值

+0

do这些值与您在工作表中看到的不符?他们有计算吗?目标上显示了什么?你想复制公式或结果吗? – datatoo 2012-02-21 20:27:25

回答

3

首先,你只有真正需要这一条线曾经在宏的顶部:

Set ws = ActiveSheet 

接下来,只复制值,则需要切换到双行复制/粘贴命令:

Set wbREF = Workbooks.Open("GASP.xls")  'you may want to put the full path here 

Range("B7:L61").Copy 
ws.Range("AL7").PasteSpecial xlPasteValues 'copy to original sheet 
wbREF.Close False 
+0

这是否适合你?你打算关闭这个线程吗? – 2012-02-22 14:44:46

+0

+1。这次真是万分感谢! – Taptronic 2012-06-13 15:05:31

1

我想你想要做的是有宏观的值复制,而不仅仅是公式。检查下面的代码

Set ws = ActiveSheet 
Set wbREF = Workbooks.Open("GASP.xls") 

Range("B7:L61").Copy 
ws.Range("AL7").PasteSpecial xlPasteValues 
wbREF.Close False 

还要确保excel已启用自动计算。您可以在“公式”功能区中进行检查。最后要注意的一点是,你需要小心的限定你的参考资料。无论何时调用“范围”功能,指定包含该范围的工作簿和工作表都是明智之举。就像这样:

ThisWorkbook.Sheets("Sheet1").Range("Al7") 

With ThisWorkbook.Sheets("Sheet1") 
    Set rng = .Range("Al7") 
End With 
+0

+1完全符合工作表/范围的路径的好建议。但你错过了“Range(”B7:L61“),复制”。为工作表定义第二个变量,然后将其设置为“GASP.xls”中的工作表,然后将其添加到Range(“B7:L61”)之前。 :) – 2012-02-22 01:58:50

+0

感谢大家的回应。工作很好。 – 2012-02-22 11:32:01