2013-06-19 14 views
0

Итак, у нас есть несколько уникальных разделов в шаблоне с поддержкой макросов для Word 2007 и для каждого раздела, у нас есть 2 записи, которые являются стандартными для формы, а затем есть около 20 дополнительных записей, которые все обрабатываются по автотексту. Форматирование идентично между шаблоном и записями AutoText, и я хочу автоматически указывать записи по мере их добавления (либо пользователем, вводя ключевую фразу AutoText, либо нажав кнопку на ленте, чтобы вставить ее). Есть ли простой способ сделать это? Вот блок кода, в котором один из них (пронумерованные) записей обрабатывается и то, что я пытался реализовать в виде схемы нумерации от других предложений на других форумах (не мог найти что-нибудь полезное здесь):Есть ли «элегантный» способ для автоматической автокоррекции в макросе Word 2007 (VBA)?

Case "cboFF" 
         SetMargins 0, 1, 1 
         Selection.ParagraphFormat.Space1 
         Selection.Text = "FINDINGS OF FACT" & vbLf 
         Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 
         Selection.Font.Bold = True 
         Selection.Font.Underline = wdUnderlineSingle 
         Selection.Collapse (wdCollapseEnd) 
         Selection.Text = vbLf 
         Selection.ParagraphFormat.SpaceAfter = 6 
         Selection.Collapse (wdCollapseEnd) 
         Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify 
         Selection.Font.Underline = wdUnderlineNone 
         Selection.Font.Bold = False 
         SetMargins 0, 1, 1 
         'With ListGalleries(wdNumberGallery).ListTemplates(1).ListLevels(1) 
         '.NumberFormat = "%1." 
         '.TrailingCharacter = wdTrailingTab 
         '.NumberStyle = wdListNumberStyleNone 
         '.NumberPosition = InchesToPoints(0.5) 
         '.Alignment = wdListLevelAlignLeft 
         '.TextPosition = InchesToPoints(0.5) 
         '.ResetOnHigher = 0 
         '.StartAt = 1 
         'AutoNumberOnFOF 
         Selection.Text = "On " & strDateFOF & ", an industrial appeals judge certified that the parties agreed to include the Jurisdictional History in the Board record solely for jurisdictional purposes." & vbLf 
         Selection.ParagraphFormat.SpaceAfter = 6 
         Selection.Collapse (wdCollapseEnd) 
         Select Case strCaseCategory 
          Case "IND", "IND SELF-I" 
           If frmIIOD.optII.Value = True Then 
            Selection.Text = "II-FF" 
            Selection.Range.InsertAutoText 
            Selection.Collapse (wdCollapseEnd) 
            Selection.Text = vbLf 
            Selection.ParagraphFormat.SpaceAfter = 6 
            Selection.Collapse (wdCollapseEnd) 
            GoToEnd 
           End If 
           If frmIIOD.optOD.Value = True Then 
            Selection.Text = "OD-FF" 
            Selection.Range.InsertAutoText 
            Selection.Collapse (wdCollapseEnd) 
            Selection.Text = vbLf 
            Selection.ParagraphFormat.SpaceAfter = 6 
            Selection.Collapse (wdCollapseEnd) 
            GoToEnd 
           End If 
           If frmIIOD.optNotNeeded.Value = True Then 
            Selection.Text = vbLf 
            Selection.ParagraphFormat.SpaceAfter = 6 
            Selection.Collapse (wdCollapseEnd) 
           End If 
          Case Else 
           'Do Nothing 
         End Select 

Любые конструктивные комментарии будут высоко оценены, чтобы помочь решить эту проблему. Я все еще очень новичок в программировании в целом, и большая часть моего опыта лежит на C# и Java.

Редактировать: Структура документа представляет собой набор подробных списков, содержащих юридический текст, который обновляется пользователем, поскольку процесс апелляции проходит через различные этапы. В каждом из последних двух разделов список элементов должен следовать определенной схеме нумерации (число в .5 ", текст в 1", правая вкладка в 1 "), которая не является родной для Word 2007. Для каждого выделенного выделенного заголовка из разделов, которые являются отправной точкой нумерации. Записи AutoText будут добавляться по мере необходимости пользователем. Остальная часть документа извлекает информацию из нашей базы данных и содержит юридическую формулировку, необходимую для документа. Если бы я мог просто фигурировать

+0

0 Вы можете добавить ссылку на ваш документ, чтобы лучше понять структуру документа? –

ответ

0

Я действительно выяснил свое собственное решение проблемы. Проблема заключалась в том, чтобы вставить запись AutoText на (2-й) линии нумерации, так как он читает всю строку и считает, что это запись автотекста. Вместо того, чтобы читать только файл ii-ff или od-ff, он читал 1. ii-ff, что недействительно Запись автотекста (по имени).

    Case "cboFF" 
         SetMargins 0, 1, 1 
         Selection.ParagraphFormat.Space1 
         Selection.Text = "FINDINGS OF FACT" & vbLf 
         Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter 
         Selection.Font.Bold = True 
         Selection.Font.Underline = wdUnderlineSingle 
         Selection.Collapse (wdCollapseEnd) 
         Selection.Text = vbLf 
         Selection.ParagraphFormat.SpaceAfter = 6 
         Selection.Collapse (wdCollapseEnd) 
         Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify 
         Selection.Font.Underline = wdUnderlineNone 
         Selection.Font.Bold = False 
         SetMargins -0.5, 1, 1 
         'AutoNumberOn 
         Selection.Text = "1." & vbTab & "On " & strDateFOF & strEntry1 & vbLf 
         Selection.ParagraphFormat.SpaceAfter = 6 
         Selection.Collapse (wdCollapseEnd) 
         Select Case strCaseCategory 
          Case "IND", "IND SELF-I" 
           If frmIIOD.optII.Value = True Then 
            Selection.Text = "2." & vbTab & strIIEntry & vbLf 
            Selection.ParagraphFormat.SpaceAfter = 6 
            Selection.Collapse (wdCollapseEnd) 
            Selection.Text = "3." & vbTab & "" & vbLf 
            Selection.Collapse (wdCollapseEnd) 
           End If 
           If frmIIOD.optOD.Value = True Then 
            Selection.Text = "2." & vbTab & strODEntry & vbLf 
            Selection.Text = "3." & vbTab & "" & vbLf 
            Selection.Collapse (wdCollapseEnd) 
           End If 
           If frmIIOD.optNotNeeded.Value = True Then 
            Selection.Text = "2." & vbTab & "" & vbLf 
            Selection.ParagraphFormat.SpaceAfter = 6 
            Selection.Collapse (wdCollapseEnd) 
           End If 
          Case Else 
           'Do Nothing 
         End Select 

Это позволяет вставить Автотекст на пустые строки, и по-прежнему предварительно отформатированный систему нумерации, которая не является родным для Word 2007. Теперь мне просто нужно выяснить, самый простой способ higlight конкретных слов в вставленный выбор. Не должно быть слишком плохо:

'set array of text entries (6) 
    'begin loop 
    'find and highlight entry(i) 
    'end loop