2017-02-10 147 views
-1

起初此代碼是「排序工作」,這意味着它會將信息粘貼到目標但不在正確的單元格中,並添加額外的行而不是跳過空行。一旦我將它正確地粘貼到適當的單元格上,它就不再需要工作了。VBA運行時錯誤'1004':工作表類的粘貼方法失敗

我相信這是一個相當簡單的問題,但我很茫然。任何幫助將不勝感激

Private Sub CommandButton1_Click() 

Dim Myfile As String 
Dim erowFilepath = ("C:\Users\YOU DONT NEED TO SEE THIS PART\Desktop\LINKED TRACKERS\") 
Myfile = Dir("C:\Users\OR THIS PART\Desktop\LINKED TRACKERS\") 

Do While Len(Myfile) > 0 
    If Myfile = "COMPANY_CYCLE.xlsm" Then 
     Exit Sub 
    End If 

    Workbooks.Open (Filepath & Myfile) 
    Worksheets("ROSTER").Range("A3:O3").Copy 
    ActiveWorkbook.Save 
    ActiveWorkbook.Close 

    erow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
    ' ***The line below is the line I get an error*** 
    ActiveSheet.Paste Destination:=Worksheets("MANNINGROSTER").Range(Cells(erow, 1), Cells(erow, 1)) 

    Myfile = Dir 
Loop 

End Sub 

長話短說:我試圖合併來自4個不同的工作簿中的數據,用戶將輸入數據到一個工作簿,因爲它是擺在那我可以監控和處理信息日復一日。

我相當確定問題源於受密碼保護的源工作表,並且所有4個工作簿的粘貼目標也是相同的。

我似乎無法找出解決方法。一個錯誤導致另一個,另一個等

+0

幾件事情需要加以糾正,宣言erowFilepath,改變'昏暗erowFilepath:erowFilepath =(C:\用戶\你不需要看到這個PART \桌面\ LINKED TRACKERS \)'也不要使用ActiveWorkbook,而是創建一個工作簿對象執行操作。 – Barney

+0

我以前曾試過。開始得到運行時錯誤'1004:對不起,我們找不到「指定文件名.xlsm」。它可能被移動,重命名或刪除。 –

+0

'Option Explicit'應該位於每個代碼模塊的頂部 –

回答

1
Private Sub CommandButton1_Click() 

    Dim Myfile As String, Filepath As String 
    Dim wb As Workbook, rng As Range 

    Myfile = Dir("C:\Users\OR THIS PART\Desktop\LINKED TRACKERS\") 
    Filepath = ("C:\Users\YOU DONT NEED TO SEE THIS PART\Desktop\LINKED TRACKERS\") 

    Do While Len(Myfile) > 0 

     If Myfile Like "*.xls*" And UCase(Myfile) <> "COMPANY_CYCLE.XLSM" Then 

      Set wb = Workbooks.Open(Filepath & Myfile) 
      Set rng = wb.Worksheets("ROSTER").Range("A3:O3") 

      'EDIT: copy values only, (when there's something to copy) 
      If Application.CountA(rng) > 0 Then 
       With Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
        .Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value 
       End With 
      End If 
      'Note: if there's nothing in ColA for the copied range, this will 
      ' throw off the next copy and you may end up overwriting data... 

      wb.Close False 

     End If 
     Myfile = Dir 
    Loop 

End Sub 
+0

這很好用!謝謝!。現在我只需要調整它,以便它只粘貼單元格值與格式化,空行等。 非常感謝! –

+0

所以我一直在搞這個問題好幾天了,現在還沒有找到一種方法來超越被複制的單元格的值。 我在教自己使用VBA,並且我正在迅速地耗盡哥本哈根,怪物,並且希望能夠做到這一點。 –

+0

查看我的編輯如何僅複製值 –

相關問題