在Excel工作簿之间复制和粘贴

时间:2018-06-05 20:18:37

标签: excel vba excel-vba import copy-paste

我有一个宏,可以从一个excel文档复制并粘贴到另一个。出于某种原因,我在从其他源文档复制和粘贴后立即使用pastespecial时出错。因此,作为一种解决方法,我只是正常粘贴,然后再次复制,然后使用pastespecial。我的问题是,当出于某种原因运行此宏时,它会在数字末尾添加一个空格,将它们转换为文本。这意味着我的图表不会识别它们。

Workbooks.Open (fileLocation & "/" & fileName & fileType)
Worksheets(sourceWorksheet).Select
rowInUse = 46           'Add data row and name of sheet being imported into
mySheet = "sheet2"
pasteLocation = "D5"
lastColumn = ActiveSheet.Cells(rowInUse,     Columns.Count).End(xlToLeft).Column
Range(Cells(rowInUse, firstColumn), Cells(rowInUse, lastColumn)).Copy
ActiveWorkbook.Close SaveChanges:=False
Worksheets(mySheet).Select
Range(tempPasteLocation).Select
ActiveSheet.Paste
    Sheets(mySheet).Select
    Range(tempPasteLocation, Cells(tempRow, tempColumn + lastColumn)).Select
    Selection.Copy
    Range(pasteLocation).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
Range(tempPasteLocation, Cells(tempRow, tempColumn + lastColumn)).Select
Selection.ClearContents

有没有人知道为什么会这样或者如何修复它?

谢谢

1 个答案:

答案 0 :(得分:3)

执行直接值传输,而不是Copy,PasteSpecial,Values。

替换,

Sheets(mySheet).Select
Range(tempPasteLocation, Cells(tempRow, tempColumn + lastColumn)).Select
Selection.Copy
Range(pasteLocation).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True

有了这个,

with workSheets(mySheet)
    with .Range(tempPasteLocation, .Cells(tempRow, tempColumn + lastColumn))
        .Range(pasteLocation).resize(.rows.count, .columns.count) = .value2
    end with
end with