我知道这是一种常见的查询类型,但在主动搜索后我还没能找到我的具体实例的答案。我也是新的VBA用户,所以请耐心等待。
我想将包含实时公式(范围A1:HW6000)的整张数据(HISTORY.XLSM中的AllDATA选项卡)从已关闭的工作簿导入到活动工作簿中,但只将值作为值粘贴到活动工作簿中。更简单地说,想要将已关闭的工作簿中的一个工作表作为值(非实时窗体)复制到活动工作表中。
我在Mac OS X上。
这是我一直在使用的代码(运行活动工作簿中的代码)。
Sub GetRange()
With Range("A1:HW6000")
.Formula = "='C:\[HISTORY.xlsm]ALLDATA'!A1"
.Value = .Value
End With
End Sub
此代码似乎导入格式,但不会将实际粘贴的值导入到我的活动工作簿中。
有什么想法吗?
答案 0 :(得分:1)
你应该像那样做一个真正的复制粘贴
Sub ImportData()
Dim App As New Excel.Application 'create a new (hidden) Excel
' remember active sheet
Dim wsActive As Worksheet
Set wsActive = ThisWorkbook.ActiveSheet
' open the import workbook in new Excel (as read only)
Dim wbImport As Workbook
Set wbImport = App.Workbooks.Open(Filename:="C:\History.xlsm", UpdateLinks:=True, ReadOnly:=True)
'copy the data of the import sheet
wbImport.Worksheets("AllDATA").Range("A1:HW6000").Copy
wsActive.Range("A1").PasteSpecial Paste:=xlPasteFormats 'paste formats
wsActive.Range("A1").PasteSpecial Paste:=xlPasteValues 'paste values
App.CutCopyMode = False 'clear clipboard (prevents asking when wb is closed)
wbImport.Close SaveChanges:=False 'close wb without saving
App.Quit 'quit the hidden Excel
End Sub