2016-10-10 5 views
0

폴더의 파일을 반복 재생하고 각 파일에서 알 수없는 크기의 데이터를 복사하여 새 통합 문서에 모두 아래에 붙여 넣으려고합니다. 나는 항상 내게 런타임 오류 9, 아래 첨자 범위를 제공하는 클립 보드를 제대로 붙여 넣을 수있을 것 수없는 것 같습니다.클립 보드를 새 통합 문서 VBA 매크로 붙여 넣기

Sub LoopThroughFiles() 
    Dim StrFile As String 
    StrFile = Dir("filepath") 

    Dim wb As Excel.Workbook 
    Dim itemized As Excel.Workbook 
    Dim dump As Excel.Workbook 

    Do While Len(StrFile) > 0 
     MsgBox StrFile 
     Set dump = Workbooks.Open("dump.xlsx") 
     Set wb = Workbooks.Open("StrFile") 
     Set wb = ActiveWorkbook 

     Worksheets("DATA2").Visible = True 
     Worksheets("DATA2").Activate 
     Application.Goto Reference:="R1C1:R98C1" 
     Selection.EntireRow.Delete 
     Range("A1").Select 
     ActiveCell.CurrentRegion.Select 
     Selection.Copy 

     Application.Wait DateAdd("s", 1, Now()) 

     Set dump = ActiveWorkbook 
     ActiveWorkbook.Worksheets("Sheet1").Range("A1").Activate 
     ActiveCell.SendKeys ("^v") 
     StrFile = Dir 
    Loop 
End Sub 

답변

1

몇 가지 잠재적 인 문제가 있습니다. 당신이 "StrFile"에 대한 통합 문서를 열 때

1) 당신은 따옴표를 가지고 :

Set wb = Workbooks.Open("StrFile") 

이것은 당신이 문자 그대로라는 이름의 통합 문서를 찾고 의미 "StrFile." 따옴표를 제거하면 대신 변수의 내용이 보간됩니다. 원하는 내용은 다음과 같습니다.

2) 어떤 문서를 복사하여 붙여 넣을 것인지 명확하지 않습니다. 설명이 명확 해 보이지만 코드에는 혼란이 있습니다. "활성"객체를 참조하십시오. 복사하고 붙여 넣기 할 객체를 명시 적으로 호출하는 것이 더 좋습니다. 즉

, 당신은 Activeworkbook 지정 호출을 교체하고 단지 대신

3) 엄밀히는 선택/복사/붙여 넣기를 할 잘못 아니다, 말하기,하지만 당신은 건너 뛸 수있는 통합 문서를 사용 복사/붙여 넣기를 직접 수행하여 단계. 더 나은 아직, 당신은 당신이 요청하지 않은 다른

4) 한 범위를 복사하여 클립 보드의 사용을 피할 수 있지만,이 제안 # 3 없이는

을 완료하면 아마 통합 문서를 닫습니다,

제안 # 3
Sub LoopThroughFiles() 
    Dim StrFile As String 
    StrFile = Dir("filepath") 

    Dim wb, itemized, dump As Excel.Workbook 
    Dim ws As Worksheet 

    Do While Len(StrFile) > 0 
     'MsgBox StrFile 
     Set dump = Workbooks.Open("dump.xlsx") 
     Set wb = Workbooks.Open(StrFile) 

     wb.Worksheets("DATA2").Activate ' specify which workbook directly 
     Application.Goto Reference:="R1C1:R98C1" 

     Selection.EntireRow.Delete 

     wb.Range("A1").Copy ' specify which wb to copy FROM 

     Application.Wait DateAdd("s", 1, Now()) 

     ' specify which workbook to copy TO 
     dump.Worksheets("Sheet1").Range("A1").PasteSpecial xlPasteValuesAndNumberFormats 

     wb.Close 

     StrFile = Dir 
    Loop 
End Sub 

당신이/복사를 제거 이런 식으로 뭔가에 붙여 넣을 수 있습니다 :

dump.Worksheets("Sheet1").Range("A1").Value2 = wb.Range("A1").Value2 

이 다른 입학 원서 경우 큰 도움이 될 수있는이 보이게하는 방법입니다 클립 보드를 사용하려고합니다.