2014-04-28 3 views
0

구분 기호 ("///")를 기준으로 분할해야하는 여러 개의 큰 docx 파일 (단어 2010)이 있습니다. http://www.vbaexpress.com/forum/showthread.php?39733-Word-File-splitting-Macro-questiondelimeter의 단어 매크로 분할 파일

그러나 colNotes (i) .Copy (Sub SplitNotes (...)) 행에서 "텍스트가 선택되지 않았으므로이 메서드 또는 속성을 사용할 수 없습니다."라는 오류 메시지가 나타납니다.

매크로는 아래의 재현 : 관심을 가질만한 사람들을 위해

Sub testFileSplit() 
    Call SplitNotes("///", "C:\Users\myPath\temp_DEL_008_000.docx") 
End Sub 
Sub SplitNotes(strDelim As String, strFilename As String) 
    Dim docNew As Document 
    Dim i As Long 
    Dim colNotes As Collection 
    Dim temp As Range 

    'get the collection of ranges 
    Set colNotes = fGetCollectionOfRanges(ActiveDocument, strDelim) 

    'see if the user wants to proceed 
    If MsgBox("This will split the document into " & _ 
    colNotes.Count & _ 
    " sections. Do you wish to proceed?", vbYesNo) = vbNo Then 
     Exit Sub 
    End If 

    'go through the collection of ranges 
    For i = 1 To colNotes.Count 
     'create a new document 
     Set docNew = Documents.Add 

     'copy our range 
     colNotes(i).Copy 
     'paste it in 
     docNew.Content.Paste 
     'save it 
     docNew.SaveAs fileName:=ThisDocument.path & "\" & strFilename & Format(i, "000"), FileFormat:=wdFormatDocument 

     docNew.Close 
    Next 
End Sub 
Function fGetCollectionOfRanges(oDoc As Document, strDelim As String) As Collection 
    Dim colReturn As Collection 
    Dim rngSearch As Range 
    Dim rngFound As Range 

    'initialize a new collection 
    Set colReturn = New Collection 
    'initialize our starting ranges 
    Set rngSearch = oDoc.Content 
    Set rngFound = rngSearch.Duplicate 

    'start our loop 
    Do 
     'search through 
     With rngSearch.Find 
      .Text = strDelim 
      .Execute 
      'if we found it... prepare to add to our collection 
      If .Found Then 
       'redefine our rngfound 
       rngFound.End = rngSearch.Start 
       'add it to our collection 
       colReturn.Add rngFound.Duplicate 
       'reset our search and found for the next 
       rngSearch.Collapse wdCollapseEnd 
       rngFound.Start = rngSearch.Start 
       rngSearch.End = oDoc.Content.End 
      Else 
       'if we didn't find, exit our loop 
       Exit Do 
      End If 
     End With 
     'shouldn't ever hit this... unless the delimter passed in is a VBCR 
    Loop Until rngSearch.Start >= ActiveDocument.Content.End 

    'and return our collection 
    Set fGetCollectionOfRanges = colReturn 
End Function 
+0

나는 오류 메시지가 정확히 무슨 문제가 있다고 생각합니다. 오류가 발생한 줄 바로 앞에'colNotes (i) .Range.Select'를 추가하십시오. –

답변

0

: 코드는 문제는 파일의 첫 번째 일이었다 구분 ... 삭제는 2010 년 일했다 않습니다 그것과 그것이 효과가 ...