Разное - Копирование из Adobe Reader в Word- текст "столбиком"

Аватара пользователя
Дмитрий qa

Re: Разное - Копирование из Adobe Reader в Word- текст "столбиком"

Сообщение Дмитрий qa »

Макрос работает ровно так, как написано, не более. На выложенном Вами
Разное - Копирование из Adobe Reader в Word- текст "столбиком"
я такого не наблюдал.



Давайте будем очищать всё ручное форматирование в выделении:



Код:

Код: Выделить всё

    Dim i As Long
    With Selection.Paragraphs
        For i = .Count - 1 To 1 Step -1
            With .Item(i).Range
                .Collapse Direction:=wdCollapseEnd
                .MoveStart Count:=-1
                .Delete
                .InsertAfter " "
            End With
        Next
        With .Item(1)
            .Reset
            .Range.Font.Reset
        End With
    End With

Если будет наблюдаться то же самое — начните с исправления стилей в документе, приведя их к потребному виду.
Аватара пользователя
chatt

Re: Разное - Копирование из Adobe Reader в Word- текст "столбиком"

Сообщение chatt »

А я написал такой макрос, который преобразует текст из пдф-файла к человеческому виду, удалит переносы и разрывы строк, + добавит отступ в начале каждого абзаца.

Имеет недостаток - может добавить абзац, если строка заканчивалась точкой, еще может удалить дефис в слове, если перенос этого слова сделан на дефисе.

А так работает как часы,надеюсь пригодится.

Если найдете что-то лучше, сообщите пожалуйста. Часто приходится вставлять в переводчик тексты статей

Код:

Код: Выделить всё

Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "-^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = ".^p"
        .Replacement.Text = "||||"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "  "
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "  "
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "||||"
        .Replacement.Text = ".^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.WholeStory
    With Selection.ParagraphFormat
        .LeftIndent = CentimetersToPoints(0)
        .RightIndent = CentimetersToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpace1pt5
        .FirstLineIndent = CentimetersToPoints(1.25)
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
    End With
    Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
    Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
End Sub
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»