- Сообщения
 - 8,143
 
- Решения
 - 27
 
- Реакции
 - 6,959
 
Привет,
вообщем сильно поднадоела мне проблема со вставкой из MS Word текста на различные форумы (в том числе и в редактор от XenForo).
То кучу лишних строк добавляет сам, то пробелы съедает, то цвета и т.п.
В MS Word удобно (мне) готовить статьи и всё такое прочее.
Сделал (на коленке*) "простое", но более-менее универсальное решение: автозамена форматирования на BB-код с помощью макроса MS Word.
* подразумевается, что макрос настроен для моих нужд, если у Вас более наполеоновские аппетиты, попросите меня - я подкорректирую, что нужно.
Вот что он сейчас умеет заменять на BB-код:
- заменяет размеры шрифта MS Word (10, 12, 14, и 16-й). По-умолчанию, сделано так, чтобы не заменял 12-й шрифт (он выбран у меня как основной для всех документов).
- заменяет гиперссылки
- жирность
- курсив
- цвет красный
- цвет синий
- центрирование
- и любые комбинации этих форматов
Как это работает в целом:
1) Открываете Ваш документ с крутым оформлением, запускаете в нем макрос (ALT + F8, выполнить)
2) Копируете результат в любой простой редактор (блокнот Windows подойдет, можно и Akelpad, N++, и т.п.)
3) Копируете из блокнота текст в редактор любого форума. Победа!
Как это сделать у себя:
1) Вам нужно всего один раз выполнить п.1. этой инструкции: Как создать макрос для MS Word / MS Excel
и вставить такой код макроса:
	
	
		
			
	
	
	
		
		
	
Всё, макрос будет доступен из-под любого документа.
Примечание: если Вам нужна поддержка других размеров шрифтов, и т.п., не описанного выше, макрос нужно дорабатывать.
Выкладываю также демо (документ с разным суперформатированием и встроенный в него макрос, который вы сразу сможете проверить в работе, не забыв разрешить работу макросов для Вашей версии офиса).
Ах да, название моего макроса в списке будет "A_Replace_Into_BBcode".
Best wishes, Alex.
	
		
			
		
		
	
				
			вообщем сильно поднадоела мне проблема со вставкой из MS Word текста на различные форумы (в том числе и в редактор от XenForo).
То кучу лишних строк добавляет сам, то пробелы съедает, то цвета и т.п.
В MS Word удобно (мне) готовить статьи и всё такое прочее.
Сделал (на коленке*) "простое", но более-менее универсальное решение: автозамена форматирования на BB-код с помощью макроса MS Word.
* подразумевается, что макрос настроен для моих нужд, если у Вас более наполеоновские аппетиты, попросите меня - я подкорректирую, что нужно.
Вот что он сейчас умеет заменять на BB-код:
- заменяет размеры шрифта MS Word (10, 12, 14, и 16-й). По-умолчанию, сделано так, чтобы не заменял 12-й шрифт (он выбран у меня как основной для всех документов).
- заменяет гиперссылки
- жирность
- курсив
- цвет красный
- цвет синий
- центрирование
- и любые комбинации этих форматов
Как это работает в целом:
1) Открываете Ваш документ с крутым оформлением, запускаете в нем макрос (ALT + F8, выполнить)
2) Копируете результат в любой простой редактор (блокнот Windows подойдет, можно и Akelpad, N++, и т.п.)
3) Копируете из блокнота текст в редактор любого форума. Победа!
Как это сделать у себя:
1) Вам нужно всего один раз выполнить п.1. этой инструкции: Как создать макрос для MS Word / MS Excel
и вставить такой код макроса:
		VB.NET / VBA:
	
	
	Option Explicit
Private Enum TEXT_PROPERTY
    TEXT_BOLD = 1
    TEXT_ITALIC
    TEXT_SIZE_10 = 10
    TEXT_SIZE_12 = 12
    TEXT_SIZE_14 = 14
    TEXT_SIZE_16 = 16
    TEXT_RED
    TEXT_BLUE
    TEXT_CENTER
End Enum
Private Type POSITION_CONTEXT
    BEG As String
    END As String
End Type
Private Type BB_TAG_CODE
    BOLD            As POSITION_CONTEXT
    ITALIC          As POSITION_CONTEXT
    TEXT_SIZE_10    As POSITION_CONTEXT
    TEXT_SIZE_12    As POSITION_CONTEXT
    TEXT_SIZE_14    As POSITION_CONTEXT
    TEXT_SIZE_16    As POSITION_CONTEXT
    COLOR_RED       As POSITION_CONTEXT
    COLOR_BLUE      As POSITION_CONTEXT
    POS_CENTER      As POSITION_CONTEXT
End Type
Private Const DEFAULT_SIZE = TEXT_SIZE_12   'размер текста по-умолчанию
Public TAG As BB_TAG_CODE
' заполнение соответствий форматирования MS Word и BB-кодам
Private Sub Mapping_Init()
    With TAG
        .BOLD.BEG = "[b]"
        .BOLD.END = "[/b]"
        .ITALIC.BEG = "[i]"
        .ITALIC.END = "[/i]"
        .TEXT_SIZE_10.BEG = "[size=3]"
        .TEXT_SIZE_10.END = "[/size]"
        .TEXT_SIZE_12.BEG = "[size=4]"
        .TEXT_SIZE_12.END = "[/size]"
        .TEXT_SIZE_14.BEG = "[size=5]"
        .TEXT_SIZE_14.END = "[/size]"
        .TEXT_SIZE_16.BEG = "[size=6]"
        .TEXT_SIZE_16.END = "[/size]"
        .COLOR_RED.BEG = "[color=red]"
        .COLOR_RED.END = "[/color]"
        .COLOR_BLUE.BEG = "[color=blue]"
        .COLOR_BLUE.END = "[/color]"
        .POS_CENTER.BEG = "[center]"
        .POS_CENTER.END = "[/center]"
    End With
End Sub
Public Sub A_Replace_Into_BBcode()
    Dim Style1
    Dim Style2
    Dim Style3
    Dim Style4
    Dim Style5
   
    Dim hh As Hyperlink, i&
   
    With ActiveDocument.Hyperlinks
        For i = .Count To 1 Step -1
            Set hh = .Item(i)
            hh.TextToDisplay = "[url=" & hh.Address & "]" & IIf(hh.TextToDisplay = "", "X", hh.TextToDisplay) & "[/url]"
            hh.Delete
        Next
    End With
   
    Call Mapping_Init
   
    For Each Style1 In Array(TEXT_BOLD, 0)
   
        For Each Style2 In Array(TEXT_ITALIC, 0)
       
            For Each Style3 In Array(TEXT_SIZE_10, TEXT_SIZE_12, TEXT_SIZE_14, TEXT_SIZE_16)
           
                For Each Style4 In Array(TEXT_RED, TEXT_BLUE, 0)
               
                    For Each Style5 In Array(TEXT_CENTER, 0)
               
                        StyleToBB Style1, Style2, Style3, Style4, Style5
                       
                    Next
                Next
            Next
        Next
    Next
End Sub
Private Sub StyleToBB(ParamArray Styles())
   
    'ActiveDocument.Range.Select
    'Selection.WholeStory
   
    Dim Style, BB_Beg$, BB_End$, BB_Beg_Concat$, BB_End_Concat$
   
    With Selection.Find
   
        .ClearFormatting
   
        For Each Style In Styles
       
            BB_Beg = ""
            BB_End = ""
       
            Select Case CLng(Style)
           
                Case TEXT_BOLD
                    .Font.BOLD = True
                    .Replacement.Font.BOLD = False
                    BB_Beg = TAG.BOLD.BEG
                    BB_End = TAG.BOLD.END
       
                Case TEXT_ITALIC
                    .Font.ITALIC = True
                    .Replacement.Font.ITALIC = False
                    BB_Beg = TAG.ITALIC.BEG
                    BB_End = TAG.ITALIC.END
               
                Case TEXT_SIZE_10
                    .Font.Size = 10
                    .Replacement.Font.Size = DEFAULT_SIZE
                    BB_Beg = TAG.TEXT_SIZE_10.BEG
                    BB_End = TAG.TEXT_SIZE_10.END
               
                Case TEXT_SIZE_12
                    .Font.Size = 12
                    .Replacement.Font.Size = DEFAULT_SIZE
                    BB_Beg = TAG.TEXT_SIZE_12.BEG
                    BB_End = TAG.TEXT_SIZE_12.END
               
                Case TEXT_SIZE_14
                    .Font.Size = 14
                    .Replacement.Font.Size = DEFAULT_SIZE
                    BB_Beg = TAG.TEXT_SIZE_14.BEG
                    BB_End = TAG.TEXT_SIZE_14.END
                   
                Case TEXT_SIZE_16
                    .Font.Size = 16
                    .Replacement.Font.Size = DEFAULT_SIZE
                    BB_Beg = TAG.TEXT_SIZE_16.BEG
                    BB_End = TAG.TEXT_SIZE_16.END
                   
                Case TEXT_RED
                    .Font.Color = wdColorRed
                    .Replacement.Font.Color = wdColorAutomatic
                    BB_Beg = TAG.COLOR_RED.BEG
                    BB_End = TAG.COLOR_RED.END
                   
                Case TEXT_BLUE
                    .Font.Color = wdColorBlue
                    .Replacement.Font.Color = wdColorAutomatic
                    BB_Beg = TAG.COLOR_BLUE.BEG
                    BB_End = TAG.COLOR_BLUE.END
               
                Case TEXT_CENTER
                    .ParagraphFormat.Alignment = wdAlignParagraphCenter
                    .Replacement.ParagraphFormat.Alignment = wdAlignParagraphLeft
                    BB_Beg = TAG.POS_CENTER.BEG
                    BB_End = TAG.POS_CENTER.END
               
            End Select
           
            If Style <> DEFAULT_SIZE Then
           
                BB_Beg_Concat = BB_Beg & BB_Beg_Concat$
                BB_End_Concat = BB_End_Concat & BB_End
               
            End If
           
        Next
       
        .Replacement.Text = BB_Beg_Concat & "^&" & BB_End_Concat
       
        .Execute FindText:="", Replace:=wdReplaceAll, Wrap:=wdFindContinue
       
    End With
   
End Sub
	Всё, макрос будет доступен из-под любого документа.
Примечание: если Вам нужна поддержка других размеров шрифтов, и т.п., не описанного выше, макрос нужно дорабатывать.
Выкладываю также демо (документ с разным суперформатированием и встроенный в него макрос, который вы сразу сможете проверить в работе, не забыв разрешить работу макросов для Вашей версии офиса).
Ах да, название моего макроса в списке будет "A_Replace_Into_BBcode".
Best wishes, Alex.
Вложения
			
				Последнее редактирование: