Доброго времени суток, уважаемые Форумчани. Имеется файл Word, который содержит 15 вопросов, возможно ли создать макрос, который бы сохранил каждый вопрос в отдельный файл Word? Заранее спасибо!
Доброго времени суток, уважаемые Форумчани. Имеется файл Word, который содержит 15 вопросов, возможно ли создать макрос, который бы сохранил каждый вопрос в отдельный файл Word? Заранее спасибо!Timberwolf
Доброе время суток Поскольку текст вопросов не нумерованный список, то можно зацепиться таким образом для определения начала конца вопроса [vba]
Код
Public Sub test() Dim sText As String, i As Long Dim paraStartId As Long, paraEndId As Long paraEndId = -1: paraStartId = 0 For i = 1 To ThisDocument.Paragraphs.Count sText = ThisDocument.Paragraphs(i).Range.Text If (sText Like "#.*") Or (sText Like "##.*") Then If paraEndId >= paraStartId Then Debug.Print "Начало вопроса: параграф " & CStr(paraStartId) _ & ", конец вопроса: параграф " & CStr(paraEndId) End If paraStartId = i End If paraEndId = i Next If paraStartId > 0 Then Debug.Print "Начало вопроса: параграф " & CStr(paraStartId) _ & ", конец вопроса: параграф " & CStr(ThisDocument.Paragraphs.Count) End If End Sub
[/vba] Допишите создание нового документа, копирование параграфов вопроса и сохранение Успехов!
Доброе время суток Поскольку текст вопросов не нумерованный список, то можно зацепиться таким образом для определения начала конца вопроса [vba]
Код
Public Sub test() Dim sText As String, i As Long Dim paraStartId As Long, paraEndId As Long paraEndId = -1: paraStartId = 0 For i = 1 To ThisDocument.Paragraphs.Count sText = ThisDocument.Paragraphs(i).Range.Text If (sText Like "#.*") Or (sText Like "##.*") Then If paraEndId >= paraStartId Then Debug.Print "Начало вопроса: параграф " & CStr(paraStartId) _ & ", конец вопроса: параграф " & CStr(paraEndId) End If paraStartId = i End If paraEndId = i Next If paraStartId > 0 Then Debug.Print "Начало вопроса: параграф " & CStr(paraStartId) _ & ", конец вопроса: параграф " & CStr(ThisDocument.Paragraphs.Count) End If End Sub
[/vba] Допишите создание нового документа, копирование параграфов вопроса и сохранение Успехов!anvg
Спасибо anvg, еще вопрос по теме, есть рабочий макрос, можно ли в нем изменить название нового файла с Teil_" & x & "_" & origdoc & ".doc на первый параграф нового файла?
[vba]
Код
Sub doc_splitter() ' Copyright by W. Polmann ' Use at your own risk
origdoc = ActiveDocument.Name
Dim Mldg, Titel, Voreinstellung, Batches Mldg = "Number of batches?" Titel = "Freeware by www.ecm-e.de, W. Polmann." Voreinstellung = "1" ' Voreinstellung festlegen. ' Meldung, Titel und Standardwert anzeigen. Batches = InputBox(Mldg, Titel, Voreinstellung)
[moder]Ну Вы чего творите-то? Для макросов есть спецтег - кнопка #. Большие коды нужно под спойлер класть. Поправил за Вас. В следующий раз ругаться буду.
Спасибо anvg, еще вопрос по теме, есть рабочий макрос, можно ли в нем изменить название нового файла с Teil_" & x & "_" & origdoc & ".doc на первый параграф нового файла?
[vba]
Код
Sub doc_splitter() ' Copyright by W. Polmann ' Use at your own risk
origdoc = ActiveDocument.Name
Dim Mldg, Titel, Voreinstellung, Batches Mldg = "Number of batches?" Titel = "Freeware by www.ecm-e.de, W. Polmann." Voreinstellung = "1" ' Voreinstellung festlegen. ' Meldung, Titel und Standardwert anzeigen. Batches = InputBox(Mldg, Titel, Voreinstellung)
[moder]Ну Вы чего творите-то? Для макросов есть спецтег - кнопка #. Большие коды нужно под спойлер класть. Поправил за Вас. В следующий раз ругаться буду.Timberwolf
Сообщение отредактировал Timberwolf - Четверг, 09.04.2015, 10:13
Доброе время суток Если вы посмотрите мой код, то как раз увидите код получения текста параграфа [vba]
Код
sText = ThisDocument.Paragraphs(i).Range.Text
[/vba] Переменная paraStartId, при выполнении условия как раз и содержит номер первого параграфа. Но, необходимо учитывать число символов текста, ОС имеет ограничение по полному названию файла (включая путь). Также, в тексте могут содержаться недопустимые для названия файла символы, как, например :/\*?
Доброе время суток Если вы посмотрите мой код, то как раз увидите код получения текста параграфа [vba]
Код
sText = ThisDocument.Paragraphs(i).Range.Text
[/vba] Переменная paraStartId, при выполнении условия как раз и содержит номер первого параграфа. Но, необходимо учитывать число символов текста, ОС имеет ограничение по полному названию файла (включая путь). Также, в тексте могут содержаться недопустимые для названия файла символы, как, например :/\*?anvg
Я честно сказать в макросах новичок, вы не могли бы подставить эту строчку в мой макрос, и как сделать, чтобы второй файл назывался как первая линия второго файла и т.д.
Я честно сказать в макросах новичок, вы не могли бы подставить эту строчку в мой макрос, и как сделать, чтобы второй файл назывался как первая линия второго файла и т.д.Timberwolf
Сообщение отредактировал Timberwolf - Четверг, 09.04.2015, 18:15
Доброе время суток Timberwolf, я всё же полагаю, что следует помочь научиться человеку писать макросы, а не писать вместо него. Как-то не горю желанием писать вместо вас элементарные вещи. Может вам лучше обратиться в раздел Работа / Фриланс?
Доброе время суток Timberwolf, я всё же полагаю, что следует помочь научиться человеку писать макросы, а не писать вместо него. Как-то не горю желанием писать вместо вас элементарные вещи. Может вам лучше обратиться в раздел Работа / Фриланс?anvg