Excel VBA,用于将值从已关闭的工作簿复制并粘贴到活动工作簿Mac OS X.

时间:2017-04-12 06:37:35

标签: excel vba excel-vba-mac

我知道这是一种常见的查询类型,但在主动搜索后我还没能找到我的具体实例的答案。我也是新的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 

此代码似乎导入格式,但不会将实际粘贴的值导入到我的活动工作簿中。

有什么想法吗?

1 个答案:

答案 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