2014-02-21 3 views
0

첫 페이지에 테이블이있는 매크로가있는 MS 워드 파일이 있습니다. (표는 라벨을 사용하여 생성됩니다).VBA를 사용하여 MS Word 문서에 페이지를 추가하면 추가 페이지가 추가됩니다.

하지만 표의 셀이 충분하지 않은 경우 유사한 표가있는 다른 페이지를 추가하고 싶습니다.

그래서 나는

ActiveDocument.Sections (1) .Range.Copy

ActiveDocument.Sections.Add.Range.Paste

그러나이 코드를 다음과 같이 코드를 시도하고있다 어떤 시간은 첫 번째 페이지의 형식을 변경합니다. 또한 첫 번째 내용이있는 두 번째 페이지가있는 세 번째 빈 페이지를 만듭니다.

첫 번째 페이지의 내용을 변경하지 않고 첫 번째 페이지의 내용이 동일한 페이지 (예 : ) 만 추가하는 방법을 알려줄 수 있습니까?

감사

답변

1

표는 자동으로 다음 페이지로 유입되고, 당신은뿐만 아니라 제목 행을 반복 지정할 수 있습니다.

Sub copytable1() 
Dim rtarget As Word.Range 
With ActiveDocument 
    Set rtarget = .Range(.Content.End - 1, .Content.End - 1) 
    rtarget.InsertBreak Type:=Word.WdBreakType.wdPageBreak 
    Set rtarget = .Range(.Content.End - 1, .Content.End - 1) 
    rtarget.FormattedText = .Tables(1).Range.FormattedText 
    Set rtarget = Nothing 
End With 
End Sub 

그것은 가정 : 다음과 같은 코드가 서식을 해치는 경우

하지만 새 테이블이 필요한 가정은 ...

원래 질문은 몇 가지 해명 (아래 몇 가지 포인트 참조)하지만 볼 필요

  • 것을 복사 할 표는 단지를 삽입 할 문서
  • 에서 첫 번째 테이블은 새 페이지를 문서의 끝에 추가하고 그 후에 표의 사본을 삽입하십시오. 문서가 이미 여러 페이지로되어있을 수있는 경우 상당히 다른 코드가 필요합니다.

편집 가능한 워드 문서를 작성는으로 "좋은 연습,"당신은 내가했던 것처럼 오히려 하드 페이지 나누기보다 휴식을 달성하기 위해 설정 속성을 "전에 페이지 나누기"를 함께 단락 스타일을 사용합니다. 답장을 보내

또는

,

Sub copytable3() 
Dim rtarget As Word.Range 
With ActiveDocument 
    Set rtarget = .Range 
    rtarget.Collapse wdCollapseEnd 
    rtarget.InsertParagraphAfter 
    Set rtarget = .Range 
    rtarget.Collapse wdCollapseEnd 
    rtarget.ParagraphFormat.PageBreakBefore = True 
    Set rtarget = .Range 
    rtarget.Collapse wdCollapseEnd 
    rtarget.InsertParagraphAfter 
    Set rtarget = .Range 
    rtarget.Collapse wdCollapseEnd 
    rtarget.ParagraphFormat.PageBreakBefore = False 
    Set rtarget = .Range 
    rtarget.Collapse wdCollapseEnd 
    rtarget.Select 
    rtarget.FormattedText = .Tables(1).Range.FormattedText 
    Set rtarget = Nothing 
End With 
End Sub 
+0

안녕하세요 bibadia, 덕분에, 당신의 가정은 정확히 내 요구 사항과 일치한다. 그러나 나는 아래 줄에 런타임 오류 '4198'을 얻고 코드 .... rtarget.InsertBreak 유형 실행하면 = Word.WdBreakType.wdPageBreak 을 나는 이전 라인의 범위 개체를 만들 수 있다고 생각합니다. Excel 2013을 사용 중입니다. 자세한 내용을 알고 싶다면 알려 주시기 바랍니다. – compyutech

+0

감사합니다. Excel에서 VBA를 실행하는 경우 "ActiveDocument"를 사용하면 (적어도) 가지고있는 Word 개체의 이름으로 정규화하지 않으면 작동하지 않습니다. CreateObject 또는 GetObject.이미이 작업을 수행하고 있다면 기존 게시물을 편집하여 현재 작업중인 코드를 표시하는 것이 좋습니다. –

+0

안녕하세요, 선생님, 잘못된 정보를 주신 것에 대해 죄송합니다. Office 2013을 사용하고 있습니다. 자체적으로 말한 매크로에서 매크로를 실행하고 있지만 Excel에서는 아닙니다 ... 감사합니다. – compyutech

관련 문제