2016-06-07 134 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