我的任务
基于分隔符将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
答案 0 :(得分:1)
Range.FormattedText
返回一个范围对象。另一方面,Split函数返回一个不包含格式的字符串数组。因此,您的代码应找到您要复制的文档部分,并将该部分FormattedText
分配给声明为Range
的变量。然后可以将该变量插入另一个文档中。
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函数,该方法使用一种方法来识别源文档中的范围而不是字符串。