2015-03-05 2 views
1

Я хотел бы разделить файл документа с некоторыми единицами в отдельных единицах, взяв уровень 1, обозначенный как знак остановки. Кто-то может помочь мне в этом? Как вы можете видеть, я здесь новичок. Большое спасибоVBA WORD Как разделить документ в X документах?

+0

Все еще ждут некоторой помощи, чтобы найти полное решение этого вопроса. Заранее спасибо –

ответ

1

Ну, я сделал это. Это не совсем так и автоматическое разделение, но оно делает следующее:

Sub CutSelect() 
    Dim ruta As String 
    Selection.Cut 

    ruta = ActiveDocument.Path 
    Dim doc As Document 
      x = x + 1 
      Set doc = Documents.Add 
      Selection.Paste 
      '-----You can add some other things to do here 
      doc.SaveAs ruta & "\" & "Tema " & Format(x, "0") 
      '-----So here 
      doc.Close True 

End Sub 

X является глобальным var. Вы также можете сделать Sub, чтобы перезапустить подсчет по вашему желанию.

+0

в этом вы выбираете контент, который хотите поместить в новый файл ... – Arya

+0

... yyyep. Я делаю 5 prodecures перед сохранением и другими 7 после того, как решил OCR. Я все еще жду помощи в Auto-Procedure. Но пока это прекрасно работает. Я знаю, что это дешевое решение, но по крайней мере вы можете выбрать и автоматическое вырезание/форматирование/сохранение выбора. –

0

Нашли это. Он будет работать только для текстовых документов.

Option Explicit 

Sub SplitNotes(delim As String, strFilename As String) 
    Dim doc As Document 
    Dim arrNotes 
    Dim I As Long 
    Dim x As Long 
    Dim Response As Integer 
    Dim ruta As String 
    ruta = ActiveDocument.Path 

    'Vector con los delimitadores 
    arrNotes = Split(ActiveDocument.Range, delim) 

    Response = MsgBox("This will split the document into " & UBound(arrNotes) + 1 & " sections. Do you wish to proceed?", 4) 
    If Response = 7 Then Exit Sub 
    For I = LBound(arrNotes) To UBound(arrNotes) 
     If Trim(arrNotes(I)) <> "" Then 
      x = x + 1 
      Set doc = Documents.Add 
      doc.Range = arrNotes(I) 
      doc.SaveAs ruta & "\" & strFilename & Format(x, "0") 
      doc.Close True 
     End If 
    Next I 
End Sub 


Sub test() 
    '  delimiter & filename 
    SplitNotes "///", "Tema " 
End Sub 

Но я должен был бы сделать это с полным содержанием, таблицы, изображения и т.д.

Я работаю над этим тоже:

Sub TESTSplitNotes(delim As String, strFilename As String) 
    Dim doc As Document 
    Dim arrNotes 
    Dim I As Long 

    Dim Response As Integer 
    Dim ruta As String 
    Dim p As Paragraph 
    ruta = ActiveDocument.Path 
    Dim c As Range 
    Set c = ActiveDocument.Content 
    With c.Find 
     .Text = delim & "(*)" & delim 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = False 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchAllWordForms = False 
     .MatchSoundsLike = False 
     .MatchWildcards = True 
     .Replacement.Text = "" 
    End With 
    '.Select 
    c.Find.Execute 
While c.Find.Found 
Debug.Print c.Start 
Debug.Print c.End 
'COPY CONTENT 
     Set r = ActiveDocument.Range(Start:=ini, End:=c.End - 3) 
     r.Select 
     Debug.Print ActiveDocument.Range.End 
     Selection.Copy 
     x = x + 1 
     Set doc = Documents.Add 
     Selection.Paste 
'PASTE CONTENT 
     doc.SaveAs ruta & "\" & strFilename & Format(x, "0") 
     doc.Close True 
     ini = c.End - 3 
Wend 
End Sub 

Эта работа в первый раз, Но я не знаю, как поиск итерации между найденными элементами. После того, как он работает в первый раз, c.end не увеличивается, он все еще находится в первой позиции (например, 3106). Кто-нибудь знает, почему?

+0

, потому что вы используете весь диапазон в документе, – Arya

+0

вам нужно изменить (увеличить) начальную точку, если вы нашли контент, который вы ищете, используя find – Arya

+0

Aaaaand Я мог бы сделать это, как ....... :) –