msoFileDialogFolderPicker를 열려고하는 매크로에 대한 VBA 코드에 문제가있어서 사용자가 모든 Excel 파일을 열고 새로 열리는 통합 문서에서 하나씩 데이터를 복사하여 붙여 넣을 폴더를 선택합니다. 매크로가 실행중인 통합 문서의 특정 시트에 복사합니다. 기본적으로 우리는 각 영업 담당자에게 스프레드 시트를 제공하여 판매를 완료 한 다음 스프레드 시트를 영업 관리자에게 제출합니다. 개인이 각 스프레드 시트를 열고 데이터를 복사하여 하나의 스프레드 시트에 수동으로 붙여 넣지 않고 대신 수행하려는 작업은 나를 위해이 작업을 수행하는 매크로를 사용하는 것입니다. 파일의 위치와 이름이 바뀔 수 있으므로 가능한 한 동적으로 만들려고합니다. 이 작업을 수행하는 더 좋은 방법이있을 수 있으므로 제안 사항은 대단히 감사하겠습니다!하나의 통합 문서에서 다른 통합 문서로 복사하여 붙여 넣으려면 런타임 오류 '1004'가 내 VBA 코드와 함께 나타나는 이유는 무엇입니까?
내가 겪고있는 문제는 파일을 열어서 복사하지만 실행 시간 오류 1004 '범위 클래스 실패 복사'가 발생하여 통합 문서에 붙여 넣으려고 할 때입니다. 매크로를 실행 중입니다. ThisWorkbook 및 ThisWorkbook.Activate 매크로를 실행하는 스프레드 시트로 이동하려면 Excel 있지만 시도하지 시도했지만 아무도 내 문제를 해결했습니다. 때때로 오류가 발생하지만 마스터 통합 문서의 데이터를 붙여 넣지 않습니다. 아래 코드를 작성했습니다. 시피, 대부분 내가 찾은 코드에서 복사되었지만 내 목적에 맞게 수정하려고했습니다. 오류가 발생하는 줄은 "wb1.Worksheets (1) .Range ("A5 ")입니다."줄을 선택하십시오.
Sub LoopAllExcelFilesInFolder()
Dim wb As Workbook
Dim wb1 As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "Select A Target Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
myExtension = "*.xls*"
myFile = Dir(myPath & myExtension)
Do While myFile <> ""
Set wb = Workbooks.Open(Filename:=myPath & myFile)
Set wb1 = ThisWorkbook
Do events
wb.Worksheets(1).Range("A5:H28").Select
Selection.Copy
wb1.Activate
wb1.Worksheets(1).Range("A5").Select
ActiveSheet.Paste
DoEvents
myFile = Dir
Loop
MsgBox "Task Complete!"
ResetSettings:
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
이 내가 결국 새롭게 문을 연 통합 문서의 여러 워크 시트에서 복사하는 일을 포함하는 수행하고 원래 매크로 실행 통합 문서의 여러 시트에 붙여 넣어 갈 거 야의 단순화 된 버전입니다. 그러나이 시점에서이 간단한 버전을 실행하고 작동 시키려고합니다. 긴 코드에 대한 귀하의 모든 도움과 사과에 감사드립니다.하지만 모든 사람들에게 제가하고있는 일에 대한 아이디어를주고 싶습니다. 감사!
좋아 감사
wb.Close
를 호출해야합니다.나는 그것이 작동하도록하고 있다고 생각하지만, 내일 다시 그것을 다루는 것을 계획하고 있으므로 스레드를 확실히 열고 싶습니다. 또한이 작업을 복사하여 루프에 붙여 넣을 수는 있지만 기존 데이터 위에 쓰기/붙여 넣기를 수행하는 방법에 대한 아이디어는 없습니까? 기본적으로 모든 데이터는 하나의 테이블에 저장되고 하나는 다른 테이블 아래에 붙여 넣습니다. msofolderpicker에서 열려있는 일부 통합 문서에는 90 개의 항목이 있지만 일부 항목에는 50 개만있을 수 있습니다. 정확한 번호를 가질 방법이 없으므로이 의미에서 동적으로 유지해야합니다. –