2015-07-26 5 views
0

Моя цель - написать макрос VBA для Word 2003, где пользователь выбирает часть таблицы (особенно столбец), а макрокоманды вводят символы ввода в определенные выходные символы, например. любой из a e i o u Старт V; некоторые последовательности, такие как eh uw be V; один символ (восклицательный знак) удаляется; все, что не превращается в «V», превращается в «C». Моя проблема в том, что после первой замены выбор становится «неустановленным», поэтому изменения влияют на что-то иное, чем исходный выбор.Сохранение таблицы в Word 2003 VBA macro

With Selection.Find 
      .ClearFormatting 
      .Replacement.ClearFormatting 
      .MatchWildcards = True 
      .Replacement.Text = "V" 
      .Text = "[aeiouáéíóú]" 
      .Execute Replace:=wdReplaceAll 
'replace certain sequences 
      .Text = "[mn" & ChrW(618) & ChrW(650) & "]" & ChrW(769) 
      .Execute Replace:=wdReplaceAll 
      .Text = "[mn]" & ChrW(768) 
      .Execute Replace:=wdReplaceAll 
'delete ! 
      .Text = "[\!]" 
      .Replacement.Text = "" 
      .Execute Replace:=wdReplaceAll 
'everything else becomes C 
      .Text = "[!V]" 
      .Replacement.Text = "C" 
      .Execute Replace:=wdReplaceAll 
    End With 

Как вы можете найти/заменить только для работы с выбранными ячейками? Я заметил, что после первой замены Selection.End изменяется на то же значение, что и Selection.Start. Я не понимаю, как работает выбор столбцов в Word.

ответ

0

Я создал несколько макросов, чтобы облегчить это. Это запустит ответ о том, как перемещаться по столбцам.

Sub GoToTop() 
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument  ' This takes the pointer to the body of the document ' place cursor the body of the document in case you are located on the header 
Selection.EndKey Unit:=wdStory 'key ctrl end 
Selection.HomeKey Unit:=wdStory 'key ctrl end 
End Sub 


Sub GoToColumnTable() 'place cursor inside of the first column 
    Selection.GoTo What:=wdGoToTable 
End Sub 

Sub ColumnMove() 'move from one column to the other one 
    Selection.Move Unit:=wdColumn, Count:=1 
End Sub 
Sub ColumnSelect() 'select the entire column in which the cursor is 
    Selection.SelectColumn 
End Sub 
Sub ColumnDelete() 'delete a column that was selected 
    Selection.Columns.Delete 
End Sub