2016-08-11 2 views
0

약 15 개의 콘트롤이있는 테이블이 있습니다. 콘텐츠 컨트롤에는 다른 제목이 있습니다.VBA MS Word 콘텐트 제어 명령

이제 콘텐츠 컨트롤이있는 테이블을 두 번 복사하여 붙여 넣고 나중에 데이터베이스의 모든 콘텐츠 컨트롤에 다른 값을 가져옵니다. 다른 테이블에서 콘텐츠 컨트롤이 같은 이름을 공유하기 때문에, 나는 내 콘텐츠 컨트롤이 순차적으로 채워되지 않습니다, 나는이 코드를 사용할 때 문제가이

seqNo = 1 
For Each t in MyTables 
    ActiveDocument.SelectContentControlsByTitle("title1").Item(seqNo).Range.Text = "some value 1 from DB" 
    ActiveDocument.SelectContentControlsByTitle("title2").Item(seqNo).Range.Text = "some value 2 from DB" 
    ' and so on 
seqNo = seqNo + 1 
Next 

같은 것을 사용하여 테이블의 수를 통해 반복 생각 . 예를 들어, table1의 제목이 title1 인 콘텐츠 컨트롤이 값으로 채워지지 않고 대신 table4의 제목이 title1 인 콘텐츠 컨트롤이 해당 값을 가져옵니다. 그리고이 혼란은 정말로 나빠질 것입니다 : 표 2의 값은 표 4, 9, 10 등에서 끝날 수 있습니다.

콘텐츠 컨트롤의 순서는 내가 복사하여 붙여 넣을 때 어떻게 든 엉망이된다고 생각합니다.

단서를 얻는 방법에 대한 단서가 있습니까?

답변

0

실제로 이런 일이 발생하지 않았지만 title1, title2 등과 같은 콘텐츠 컨트롤에 고유 한 이름을 지정하고 모든 값을 반복하여 필요한 값을 설정했습니다.

0

오 마이 갓 ... 나는 같은 성가신 문제를 너무 우연히 발견했습니다. 내 해결 방법은 복사 후 코드의 제목을 변경 한 다음 붙여넣고 변경하는 것입니다 (아래 참조). 이제 내 문제는 내 코드에서 이러한 템플릿 중 많은 부분을 채우기 때문에 실행하기에는 너무 오래 걸리는 것입니다. 나는이 과정을 가속화하는 방법이나 내가 사용 해봐야 할 다른 접근법을 잃어 버리고있다.

objWord.ActiveDocument.Range(start:=objWord.ActiveDocument.Tables(3).Range.Rows(1).Range.start, End:=objWord.ActiveDocument.Tables(3).Range.Rows(5).Range.End).Copy 
    objWord.Selection.EndKey Unit:=wdStory 
    objDoc.SelectContentControlsByTitle("Date").Item(1).Title = "Date1" 
    objDoc.SelectContentControlsByTitle("StartTime").Item(1).Title = "StartTime1" 
    objDoc.SelectContentControlsByTitle("EndTime").Item(1).Title = "EndTime1" 
    objDoc.SelectContentControlsByTitle("Mins").Item(1).Title = "Mins1" 
    objDoc.SelectContentControlsByTitle("Note").Item(1).Title = "Note1" 
    objDoc.SelectContentControlsByTitle("Grp").Item(1).Title = "Grp1" 
    objDoc.SelectContentControlsByTitle("acc1").Item(1).Title = "acc1_1" 
    objDoc.SelectContentControlsByTitle("acc2").Item(1).Title = "acc2_1" 
    objDoc.SelectContentControlsByTitle("acc3").Item(1).Title = "acc3_1" 
    objDoc.SelectContentControlsByTitle("acc4").Item(1).Title = "acc4_1" 
    objDoc.SelectContentControlsByTitle("acc5").Item(1).Title = "acc5_1" 
    objDoc.SelectContentControlsByTitle("acc6").Item(1).Title = "acc6_1" 
    objDoc.SelectContentControlsByTitle("acc7").Item(1).Title = "acc7_1" 
    objDoc.SelectContentControlsByTitle("acc8").Item(1).Title = "acc8_1" 
    For j = 2 To UBound(Narray) 
     objWord.Selection.Paste 
     objDoc.SelectContentControlsByTitle("Date").Item(1).Title = "Date" & j 
     objDoc.SelectContentControlsByTitle("StartTime").Item(1).Title = "StartTime" & j 
     objDoc.SelectContentControlsByTitle("EndTime").Item(1).Title = "EndTime" & j 
     objDoc.SelectContentControlsByTitle("Mins").Item(1).Title = "Mins" & j 
     objDoc.SelectContentControlsByTitle("Note").Item(1).Title = "Note" & j 
     objDoc.SelectContentControlsByTitle("Grp").Item(1).Title = "Grp" & j 
     objDoc.SelectContentControlsByTitle("acc1").Item(1).Title = "acc1_" & j 
     objDoc.SelectContentControlsByTitle("acc2").Item(1).Title = "acc2_" & j 
     objDoc.SelectContentControlsByTitle("acc3").Item(1).Title = "acc3_" & j 
     objDoc.SelectContentControlsByTitle("acc4").Item(1).Title = "acc4_" & j 
     objDoc.SelectContentControlsByTitle("acc5").Item(1).Title = "acc5_" & j 
     objDoc.SelectContentControlsByTitle("acc6").Item(1).Title = "acc6_" & j 
     objDoc.SelectContentControlsByTitle("acc7").Item(1).Title = "acc7_" & j 
     objDoc.SelectContentControlsByTitle("acc8").Item(1).Title = "acc8_" & j 
    Next 
+0

네, 그게 내가 한 일에 아주 가깝습니다. 코드의 실행 시간도 나에게 문제가된다. –