Я хотел бы создать макрос Word для разделения текста и изображений. Макрос должен вставлять текст на первое место и перемещать изображения внутри текста в конец документа и заменять изображение индексом, показывающим номер изображения, начиная с первого изображения до последнего изображения. Буду признателен, если кто-то может помочь с этим.

Я посмотрел на многих сайтах, и я разработал следующий код. Этот код просто заменяет любое изображение в документе текстом, который является своего рода индексом. Например, оно заменяет первое изображение простым индексом как «image1.jpg» и так далее. Но моя проблема в том, что я не хочу просто заменять изображение нумерованным текстовым индексом. Моя цель также состоит в том, чтобы переместить, например, изображение 1 в конец документа. Это должно происходить для второго изображения в документе, которое заменяет 2-е изображение нумерованным индексом, а затем перемещает изображение в конец документа (после первого изображения) и так далее для других изображений. Я думаю, что этот код должен быть добавлен с другим кодом, чтобы это произошло. если кто-то может помочь, это очень поможет сделать веб-страницы пригодными для печати на бумаге с помощью макроса Microsoft Word. потому что иногда не всегда необходимо печатать изображения в документе, и одного текста будет достаточно.

Dim oILShp As InlineShape
Dim ILShpIndex As Integer
For Each oILShp In ActiveDocument.InlineShapes
    ILShpIndex = ILShpIndex + 1
    'insert text in place where InlineShape is located
    ActiveDocument.Range(oILShp.Range.Start, oILShp.Range.End).Text = _
                                "[Image" & ILShpIndex & ".Jpg]"
    'delete picture is not needed - it was simply replaced with text

Next

1 ответ1

0

Следующее будет циклически проходить по встроенным фигурам, добавлять абзацы в конец документа и перемещать там встроенные фигуры.

Dim oILShp As InlineShape
Dim ILShpIndex As Long
Dim oPara1 As Paragraph

With ActiveDocument
    .Content.Paragraphs.Add
    For ILShpIndex = 1 To .InlineShapes.Count
        Set oILShp = .InlineShapes(1)
        Set oPara1 = .Content.Paragraphs.Add
        oPara1.Range.InsertParagraphAfter
        oPara1.Range.FormattedText = oILShp.Range.FormattedText
        .Range(oILShp.Range.Start, oILShp.Range.End).Text = "[Image" & ILShpIndex & ".Jpg]"
    Next ILShpIndex
End With

Обратите внимание, что, так как в любом случае вам нужен счетчик, вы можете использовать его для циклического перемещения по inlineShapes, используя For Each oILShp In ActiveDocument.InlineShapes заставит вас бесконечно циклически перемещаться по фигурам, которые вы будете продолжать перемещать в конец документа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .