2016-12-14 1 views
0

이 코드를 실행하면 코드에서 정의 된 두 셀 사이의 Excel에서 셀을 선택한 다음 특정 책갈피의 위치에 단어로 붙여 넣을 수 있습니다. 그러나 내가 코드를 실행하면 "start_of_text", "end_of_text"및 "Start_of_table", "End_of_table"사이의 첫 번째 셀에서 작동하지만 두 번째 textemarke.pastespecial (xlPasteall)에서 런타임 오류 '4198 '명령 실패.Excel에서 Excel로 복사하여 지나가는 명령 오류로 인한 오류

누구든지 의견이 있으십니까? 대신 textMarke.PasteSpecial

Dim rownum As Integer 
    Dim colnum As Integer 
    Dim startrow As Integer 
    Dim endrow As Integer 
    Dim textmarke 

    rownum = 1 
    colnum = 2 

' Filtering for T1 line 

    ThisWorkbook.Worksheets("Template-Referenz-Produkte").Columns("A:A").AutoFilter Field:=1, Criteria1:="=<T1 Line>" _ 
    , Operator:=xlOr 


    ' Find eveything between start of text and end of text 
    With ThisWorkbook.Worksheets("Template-Referenz-Produkte") 
    For rownum = 1 To 10000 
     Do 
     If .Cells(rownum, 2).Value = "Start_of_text" Then 
      startrow = rownum + 1 
      End If 
      rownum = rownum + 1 

     If (rownum > 10000) Then Exit For 

     Loop Until .Cells(rownum, 2).Value = "End_of_text" 
     endrow = rownum - 1 

     'Select everything from start of text to end of text 
     ThisWorkbook.Worksheets("Template-Referenz-Produkte").Range("B" & startrow & ":B" & endrow).Copy 

     'Paste description from excel sheet 
     Set textmarke = doc.Bookmarks("INSERT_T1_LINE_reference_TABLE").Range 
     textmarke.PasteSpecial (xlPasteAll) 
     textmarke.Style = "Heading 4" 
     doc.Bookmarks.Add "INSERT_T1_LINE_reference_TABLE", textmarke 'Set the text marker on this specific range. 

    ' Find everything between start of table and end of table 
     Do 
      If .Cells(rownum, 2).Value = "Start_of_table" Then 
      startrow = rownum + 1 
      End If 
      rownum = rownum + 1 

     If (rownum > 10000) Then Exit For 

     Loop Until .Cells(rownum, 2).Value = "End_of_table" 
     endrow = rownum - 1 

     'Select everything from start of table to end of table 
     ThisWorkbook.Worksheets("Template-Referenz-Produkte").Range("B" & startrow & ":E" & endrow).Copy 

     'Paste description from excel sheet 
     Set textmarke = doc.Bookmarks("INSERT_T1_LINE_reference_TABLE").Range 
     textmarke.PasteSpecial (xlPasteAll) 
     doc.Bookmarks.Add "INSERT_T1_LINE_reference_TABLE", textmarke 'Set the text marker on this specific range. 

    Next rownum 
    End With 
+0

나는이 오류의 잘 모르겠지만, 같은'Bookmark'에 이유를 붙여 넣을? 첫 번째 루프는 열 B를 복사하고 두 번째 루프는 열 B : E를 복사하므로 루프도 중복 된 것처럼 보입니다. 왜 둘 다 필요한지 설명해 주시겠습니까? –

+0

첫 번째 붙여 넣기를 제목으로 지정하고 두 번째 붙여 넣기를 표로 지정하고이 작업을 수행하는 다른 방법을 알지 못합니다. 책갈피를 사용하면 얼마나 많은 표를 붙여 넣을지 잘 모르며 동일한 책갈피를 사용하여 새 북마크를 추가하는 것이 가장 쉬운 방법이라고 생각합니다. – Max

+0

아래 제안한 답변을 시도해 보셨습니까? 작동 했나요? –

답변

0

당신은 시도 할 수 있습니다 :

textMarke.Select 
doc.Parent.CommandBars.ExecuteMso "PasteExcelTableSourceFormatting" 
+0

나는이 솔루션을 시도했지만 지시 된대로 울부 짖는 대신에 서로의 테이블을 붙여 넣습니다. – Max

+0

다른 해결책이 있습니까? – Max

+0

음, 각 테이블별로 다른 북마크가 필요하다고 생각합니다. 당신이 제공 한 코드에서와 같이, 그것은 단지 1 개의 이름 북마크를 본다. 또는 첫 번째 테이블을 책갈피에 붙여 넣기위한 다른 솔루션이 필요하며 후속 테이블에 다른 Word Range (책갈피가 아님)를 할당해야합니다. –