1

複数の人物とその詳細を含む Word ファイルがあります。

このファイルを各人ごとに 1 つのファイルに分割する必要があります。

これはコードです。そのほとんどは、私が見つけた例からのものです。

ファイルを区切り文字 (個人用) で分割する必要があります。
各ファイルは、区切り文字のすぐ下にある ID 番号で名前を付ける必要があります。

Sub SplitNotes (delim As String)

    Dim sText As String
    Dim sValues(10) As String
    Dim doc As Document
    Dim arrNotes
    Dim strFilename As String
    Dim Test As String
    Dim I As Long
    Dim X As Long
    Dim Response As Integer

    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)
             'Find "EID: "
             doc.Range.Find.Text = "EID: "
             'Select whole line
             Selection.Expand wdLine
             'Assign text to variable
             sText = Selection.Text
             'Remove spaces
             sText = Replace(sText, " ", "")
             'Split string into values
             sValues = Split(sText, ":")

            strFilename = "Testing"
            doc.SaveAs ThisDocument.Path & "\" & strFilename & Format(X, "Agent")
            doc.Close True
        End If
    Next I
End Sub

Sub Test()
    'delimiter
    SplitNotes "Name:"
End Sub 

Word 文書は次のように設定されます。

    個人的
    名前: ジョン・スミス
    EID: Alph4num3r1c (私が知っているように設定された長さではありません)
    詳細はこちらから

私の問題は、ID 番号を取得し、それを関数として保存で使用することです。
分割機能がどのように機能するかを完全に理解していません。

4

2 に答える 2

0

あなたの質問がまだ有効である場合は、検索するファイル名に関するいくつかの解決策があります。私はあなたのコードのすべての部分をチェックしませんでした (そうしましたが、完全な分析を行うための元のドキュメントはありません)。ファイル名に戻ります。以下の単純なロジックを使用して、新しく作成されたドキュメントから名前を抽出できます。

'...beginning of your code here
'next part unchanged >>
For I = LBound(arrNotes) To UBound(arrNotes)
        If Trim(arrNotes(I)) <> "" Then
            X = X + 1
            Set doc = Documents.Add
            doc.Range = arrNotes(I)
'<<until this moment

'remove or comment your code here!!

'and add new part of the code to search for the name
    Selection.Find.Execute "EID:"
    Selection.MoveRight wdWord, 1
    Selection.Expand wdWord
    strFilename = Trim(Selection.Text)

'and back to your code- unchanged
            doc.SaveAs ThisDocument.Path & "\" & strFilename & Format(X, "Agent")
            doc.Close True
        End If
Next I
'...end of sub and other ending stuff

私はそれをチェックし、私にとってはまったく問題なく動作します。

于 2013-05-30T13:09:05.303 に答える