2013-08-27 152 views
0

我有一個excel電子表格,在執行郵件合併之前導出到臨時文件。
這是通過複製/粘貼achived如下:PasteSpecial(xlPasteValues)給出#VALUE

Dim current As Workbook 
Set current = ActiveWorkbook 

Dim wb As Workbook 
Set wb = Workbooks.Add 

current.Sheets("Input").UsedRange.Copy 

' Only paste values, since posting formulas would give #REFERENCE errors 
wb.Worksheets(1).name = "Input" 
wb.Worksheets(1).Range("A1").PasteSpecial (xlPasteValues) 

然而,在一個專欄中,我得到#VALUE!在所有單元格中(除了標題)。這些字符串是比任何其他的我正在複製,再與大約170-190字


編輯

挖掘到這個問題,我在一些有趣的東西都有所涉獵。在另一個電子表格中查找時,如果將其中一個輸出打開,會導致值發生變化。

這些單元格的值是文檔的位置以及一些細節。我認爲這可能是導致#VALUE!錯誤 - 因爲導出會打開一個新的工作簿,沒有位置。如果公式是計算在這一點上,我認爲它可能會給#VALUE!錯誤。

下面是公式:

=IF($A3<>"";CHAR(34) & SUBSTITUTE(LEFT(CELL("filnavn"); FIND("[";CELL("filnavn")) - 1) & "Images\" & INDIRECT("'" &VLOOKUP($G3;'Item Information'!$A$2:$C$249;3;FALSE) & "'!F2") & ".png"; "\"; "/") & CHAR(34); "") 
+0

嘗試'wb.Worksheets(1).Range( 「A1」)PasteSpecial的(xlPasteValuesAndNumberFormats)'? – PatricK

+0

@PatricK現在我有;相同的結果... – Kentora

+1

您的發現解釋了原因。導出的沒有命名的單元格「filnavn」。我會使用一個Long變量來存儲'.Calculation'的初始狀態並在最後恢復到它,因爲它有三種可能的狀態。將您的答案標記爲答案! – PatricK

回答

1

經過調試,我發現它的確是造成問題,增加了新的工作簿時的公式。

設置Application.Calculation = xlCalculationManual之前的代碼運行,然後Application.Calculation = xlCalculationAutomatic之後,解決了這個問題。在VBA複製值

0

最好的辦法是(而不是複製粘貼&):

With current.Sheets("Input").UsedRange 
    wb.Worksheets(1).Range("A1").Resize(.Rows.Count, .Columns.Count).Value=.Value 
End With