2017-04-12 91 views
0

我知道這是一種常見的查詢類型,但是在激活後我還沒有找到答案搜索。我也是一位新的VBA用戶,請耐心等待。Excel VBA複製並粘貼爲從已關閉的工作簿中的值到活動工作簿,Mac OS X

我想將包含活動公式(範圍A1:HW6000)的整個數據表(HISTORY.XLSM中的AllDATA選項卡)從已關閉的工作簿導入活動工作簿,但僅作爲值粘貼到活動工作簿中。更簡單地說,想要將關閉的工作簿中的一個工作表複製爲活動工作表中的值(不是活的formuale)。

我在Mac OS X

這是我一直在使用(運行從活動工作簿的代碼)的代碼。

Sub GetRange() 
    With Range("A1:HW6000") 
    .Formula = "='C:\[HISTORY.xlsm]ALLDATA'!A1" 
    .Value = .Value 
End With 
End Sub 

此代碼似乎將格式但不是實際粘貼值導入到我的活動工作簿中。

任何想法?

回答

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 
+0

這是偉大的!是否有任何代碼可以添加,以防止導入工作簿在重新計算時打開?導入工作簿在關閉之前已重新計算,重新計算似乎需要很長時間。我已經嘗試過「UpdateLinks:= False」,但這似乎並沒有成功。謝謝!!!! – cwight

+0

計算設置與工作簿一起存儲。如果將工作簿保存爲手動,則會以手動方式打開。如果不打開工作簿,則無法停用自動計算(首先計算運行)。另一件事是,在粘貼之前,至少要粘貼這些值,像'now()'這樣的易失性函數會被重新計算。我建議保存'C:\ History.xlsm'並將計算設置爲手動。 –

相關問題