@שלמה11 כתב בעזרה בחיפוש ובחירה בוורד:
השקעתי בך...
יישר כח תזכה למצוות, שיעמוד לך לזכות.
צאט gpt נתן לי הרגע פתרון מצוין בלי שום באגים.
מייצר לי בלחיצת כפתור קובץ לכל אחד עם כל מה שכתב:
Sub ExportSectionsByAuthor()
Dim para As Paragraph
Dim paraText As String
Dim currentAuthor As Variant
Dim authors As Variant
Dim docDict As Object
Dim newDoc As Document
Dim pendingText As String
Dim i As Long
' רשימת כל שמות הכותבים במסמך
authors = Array( _
"הרב משה כהן", _
"הרב ישראל הירשמן", _
"הרב ברוך גודלבסקי", _
"הרב שלום מרדכי ובר", _
"הרב אהרן יעקובוביץ", _
"הרב דוד ישראלי", _
"הרב שמעון לוי", _
"הרב צבי וינגורט", _
"הרב אברהם ישעיהו לוין", _
"הרב נחמן פישר", _
"מורנו ראש הכולל שליט""א" _
)
' יצירת מילון לאגירת טקסטים לכל כותב
Set docDict = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(authors)
docDict.Add authors(i), ""
Next i
pendingText = ""
' מעבר על כל פסקה במסמך
For Each para In ActiveDocument.Paragraphs
paraText = para.Range.Text
Dim foundAuthor As String
foundAuthor = ""
' בדיקה האם הפסקה מכילה את שם אחד הכותבים
For i = 0 To UBound(authors)
If InStr(paraText, authors(i)) > 0 Then
foundAuthor = authors(i)
Exit For
End If
Next i
If foundAuthor <> "" Then
' הפסקה היא של חתימה – יש לשייך את הטקסט שנצבר למי שהופיע בה
docDict(foundAuthor) = docDict(foundAuthor) & pendingText & paraText
pendingText = "" ' אפס את הצבירה
Else
pendingText = pendingText & paraText
End If
Next para
' שמירה של כל המסמכים
For Each currentAuthor In docDict.Keys
If Trim(docDict(currentAuthor)) <> "" Then
Set newDoc = Documents.Add
newDoc.Range.Text = docDict(currentAuthor)
' ניקוי שם קובץ
Dim safeName As String
safeName = currentAuthor
safeName = Replace(safeName, ":", "-")
safeName = Replace(safeName, "\", "-")
safeName = Replace(safeName, "/", "-")
safeName = Replace(safeName, "*", "-")
safeName = Replace(safeName, "?", "")
safeName = Replace(safeName, Chr(34), "")
safeName = Replace(safeName, "<", "")
safeName = Replace(safeName, ">", "")
safeName = Replace(safeName, "|", "")
newDoc.SaveAs2 FileName:=safeName & ".docx"
newDoc.Close
End If
Next
MsgBox "המסמכים נוצרו בהצלחה!"
End Sub