2017-11-23 8 views
0

내 작업분할 워드 여러 부분으로 문서와 텍스트 형식을 유지하면서 구분에 따라 여러 부분으로 텍스트 형식을

분할 Word 문서를 보관하십시오.

나는 어디에 있습니까?

하나의 문서로 기본 예제를 시도했지만 배열이 없으면 작동했습니다.

Option Explicit 

Public Sub CopyWithFormat() 
    Dim docDestination As Word.Document 
    Dim docSource  As Word.Document 

    Set docDestination = ActiveDocument 
    Set docSource  = Documents.Add 

    docSource.Range.FormattedText = docDestination.Range.FormattedText 
    docSource.SaveAs "C:\Temp\" & "test.docx" 
    docSource.Close True    
End Sub 

어디에서 멈 춥니 까?

전체 문서를 배열에 넣고 루프를 반복합니다. 이 라인에 error 424 - Object necessary이없는 것은 docDestination.Range.FormattedText = arrNotes(I)입니다.

docDestination.Range.FormattedText = arrNotes(I).Range.FormattedText 
docDestination.Range.FormattedText = arrNotes(I).FormattedText 
docDestination.Range.FormattedText = arrNotes.Range.FormattedText(I) 
docDestination.Range.FormattedText = arrNotes.FormattedText(I) 

당신이 도움 배열을 적절하게 액세스하는 방법에 대한 올바른 방향으로 날 지점 시겠어요 :

은 또한 운이없는 이러한 네 가지 변종을 시도?

내 코드

Option Explicit 

Sub SplitDocument(delim As String, strFilename As String) 
    Dim docSource  As Word.Document 
    Dim docDestination As Word.Document 
    Dim I    As Long 
    Dim X    As Long 
    Dim Response  As Integer 
    Dim arrNotes 

    Set docSource = ActiveDocument 
    arrNotes  = Split(docSource.Range, delim) 

    For I = LBound(arrNotes) To UBound(arrNotes) 
     If Trim(arrNotes(I)) <> "" Then 
      X = X + 1 
      Set docDestination = Documents.Add 
      docDestination.Range.FormattedText = arrNotes(I) 'throws error 424 
      docDestination.SaveAs ThisDocument.Path & "\" & strFilename & Format(X, "0000") 
      docDestination.Close True 
     End If 
    Next I 
End Sub 

Sub test() 
    'delimiter & filename 
    SplitDocument "###", "Articles " 
End Sub 

답변

1

Range.FormattedText 범위 개체를 반환합니다. 반면에 Split 함수는 서식을 포함하지 않는 문자열 배열을 반환합니다. 따라서 코드에서 복사 할 문서의 부분을 찾아 해당 부분의 FormattedTextRange으로 선언 된 변수에 할당해야합니다. 그런 다음이 변수를 다른 문서에 삽입 할 수 있습니다.

Private Sub CopyRange() 

    Dim Src As Range, Dest As Range 
    Dim Arr As Range 

    Set Src = Selection.Range 
    Set Arr = Src.FormattedText 

    Set Dest = ActiveDocument.Range(1, 1) 
    Dest.FormattedText = Arr 
End Sub 

위 코드가 실제로 작동합니다. 개념의 Split 함수를 문자열 대신 원본 문서의 범위를 식별하는 메서드로 대체하는 방법을 찾는 것만 큼 간단합니다.