2016-06-07 66 views
0

我有一个宏(在StackOverflow上找到),旨在允许用户从他们的桌面选择一个工作簿,并将该表的A列中的所有信息复制到列A在主要的工作簿中。但是,宏没有粘贴的数据。它只是在想要粘贴的区域留下虚线。任何帮助都非常感谢。Excel VBA代码不粘贴数据

Sub PopulateUploaderFunds() 

Dim uploadfile As Variant 
Dim uploader As Workbook 
Dim CurrentBook As Workbook 

Set CurrentBook = ActiveWorkbook 
MsgBox ("Please select uploader file to be reviewed") 
uploadfile = Application.GetOpenFilename() 
    If uploadfile = "False" Then 
     Exit Sub 
    End If 
Workbooks.Open uploadfile 
Set uploader = ActiveWorkbook 
With uploader 
    Application.CutCopyMode = False 
    Range("A:A").Copy 
End With 
CurrentBook.Activate 
Sheets("Load Barcodes").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
:=False, Transpose:=False 
End Sub 
+1

你粘贴值,所以只设置范围给对方。另外,不要复制整个列。 – findwindow

+0

我不太明白你想说什么吗?我应该这样做:'范围(“A1:A100”)。value =表格(“加载条形码”)范围(“A1:100”)。值' – Tokioi

回答

0

你张贴的代码应该工作,但作为一个学习指导这里有一些提示:

  • 你不需要.Activate打开的工作簿中,Open行动 已经这样做是
  • 这是您的CurrentBook也不需要,只需在Copy中指定源和目标就足够了
  • @ findwindow的要点是确定包含您的数据的最后一行,并仅复制/粘贴该范围区域,而不是整列
  • 注意你的变量名,他们真的可以帮助你保持清醒,事情会
Option Explicit 

Sub PopulateUploaderFunds() 
    Dim uploadFilename As Variant 
    Dim currentBook As Workbook 
    Dim uploadBook As Workbook 
    Dim barcodeSheet As Worksheet 
    Dim uploadSheet As Worksheet 
    Dim lastRow As Long 

    Set currentBook = ActiveWorkbook 
    Set barcodeSheet = currentBook.Sheets("Load Barcodes") 

    uploadFilename = Application.GetOpenFilename(_ 
            FileFilter:="Excel Workbooks,*.xlsx;*.xls", _ 
            Title:="Select Uploader file to be reviewed") 
    If uploadFilename <> "False" Then 
     Set uploadBook = Workbooks.Open(Filename:=uploadFilename, ReadOnly:=True) 
     Set uploadSheet = uploadBook.Sheets("Sheet1") 
     lastRow = uploadSheet.Cells(uploadSheet.Rows.Count, "A").End(xlUp).Row 
     uploadSheet.Range("A1").Resize(lastRow, 1).Copy _ 
        Destination:=barcodeSheet.Range("A1").Resize(lastRow, 1) 
     uploadBook.Close 
    End If 

End Sub 
+0

感谢您提出有用的建议,我的VBA很粗糙,任何提示都非常有帮助。这段代码适用于我所需要的。 – Tokioi

0

您引用的代码应该可以工作。虚线出现在复制的单元格周围(来自用户选择的上传工作簿),而不是用于选择性粘贴操作的目标范围。

该代码没有指定要从中复制A列的工作表,因此它将在保存工作簿时复制第一列的任何一个工作表是avtice。尝试指定表单代号,例如Sheet1.Range("A:A")

+0

好吧,我理解这个更好,谢谢你的小费。 – Tokioi