2017-12-26 3 views
0

을 사용합니다. 지금 해결하려는 문제는 편집을 활성화하는 방법입니다. 결합 할 모든 보고서를 다운로드 한 후 사용자가 편집 할 수있는 경우 매크로에 문제가 없습니다. 그들은 버튼을 놓친 경우 데이터를 포착하지 않는 매크로를 사용하여 문제가 발생합니다. 그들은 많은 통합 문서와 함께 작동하지 않는 동안나는 현재 그들이 단어 "보고서"로 시작하는 경우 열려있는 모든 통합을 반복하고있는 데이터를 사로 잡고 매크로를 만들어 엑셀 2016에서 작업하고 편집 VBA

, 나는 그들을 위해 쉽게 만들려고 노력하고 있습니다. 게시 한 코드는 처음 3 개의 통합 문서를 처리 한 다음 나머지 5 개를 반복하지만 "편집 사용"은 수행하지 않습니다.

Sub EnableEdit() 

Dim bk As Workbook 
Dim w As Long, wCount As Long 

wCount = Application.ProtectedViewWindows.Count 
Set wsh = ThisWorkbook.Worksheets("Data") 

On Error Resume Next 
    If wCount > 0 Then 
     For w = 1 To wCount 
      Application.ProtectedViewWindows(w).Activate 
      Application.ProtectedViewWindows(w).Edit 

      If Left(ActiveWorkbook.Name, 6) = "report" Then 
       ActiveWorkbook.Worksheets(1).Range("A1:Z1").Copy _ 
        Destination:=wsh.Range("A1") 
       nrow = wsh.Cells(Rows.Count, 1).End(xlUp).Row + 1 
       ActiveWorkbook.Worksheets(1).Range("A2:Z500").Copy _ 
        Destination:=wsh.Range("A" & nrow) 
       ActiveWorkbook.Close 
      End If 
     Next w 
    End If 
On Error GoTo 0 

End Sub 
+0

추적 할 수없는 가망이 https://stackoverflow.com/questions/31042383/vba-to-enable와 중복 -editing –

+0

나는 그 해결책을 시도했지만 여전히 같은 결과를 얻었다. 나는 그 질문에 그것을 게시 했어야했다. 죄송합니다. 아직 포럼에 익숙해 져 있습니다. – Tony

+0

'For w = wCount To 1 Step -1'을 시도해 보셨습니까? 필자는'ProtectedViewWindows'를 한번도 사용하지 않았지만'w'가'1'이고'.Edit'이 수행 될 때'ProtectedViewWindows (1)'가 콜렉션에서 제거 된 것으로 가정합니다. 그리고 나서'w'가'2' 일 때'ProtectedViewWindows (2)'는 원래 컬렉션의 세 번째 요소 (원래 컬렉션의 두 번째 요소는 이제'ProtectedViewWindows (1)')를 참조 할 것입니다. 모든 두 번째 요소 만 처리하게됩니다. (그리고'On Error'는 범위 밖의 에러를 아래 첨자로 마스킹합니다.) – YowE3K

답변

0

은 모든 보호 뷰 창의 모음으로 나타납니다. 보호 뷰 창 중 하나에서 .Edit 메서드를 실행하자마자 더 이상 보호 뷰 모드가 아니므로 컬렉션에서 제거됩니다.

즉, Edit 컬렉션의 첫 번째 구성원 (w1 일 때)은 두 번째 구성원이 현재 첫 번째 구성원이되었으며, 세 번째 구성원은 이제 두 번째 구성원이되었습니다. 루프의 다음 반복 (w2 일 때)은 원래의 세 번째 구성원을보고 있으므로 원래 두 번째 구성원을 완전히 무시한 상태입니다.

문제를 해결하는 가장 쉬운 방법은 역순으로 배열을 통해 반복하는 것입니다, 즉 사용 :

For w = wCount To 1 Step -1 
관련 문제