2017-02-10 86 views
-1

最初はこのコードは「正常に動作しています」。つまり、情報は宛先に貼り付けられますが、正しいセルには貼り付けられず、空の行をスキップする代わりに適切な細胞に正しくペーストするようになったら、もはや働きたくありません。VBA実行時エラー '1004':Worksheetクラスの貼り付けメソッドが失敗しました

これはかなり簡単な問題だと確信していますが、私は迷っています。私はそれを入れているように、単一の私が監視できるワークブックおよびプロセス情報に、そのユーザーが入力データであろう4つの異なるワークブックからデータを統合しようとしている:すべてのヘルプは大

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つのワークブックすべてで同じであることは間違いありません。

私は、これを修正する方法を見つけ出すことはできません。 erowFilepathは=(C:\ユーザーは、あなたがこのパート\ Desktopを確認する必要がいけない1つの\誤差を補正することが宣言erowFilepath、 `薄暗いerowFilepathへの変更を必要とするなど、

+0

いくつかのことを別のものに導き、そして別\ LINKED TRACKERS \) 'また、ActiveWorkbookを使用せず、代わりに実行操作のブックオブジェクトを作成します。 – Barney

+0

Iveは以前にそれを試みました。ランタイムエラーが発生し始めました '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

値をコピーする方法については私の編集を参照 –

関連する問題