2015-07-07 31 views
13

Mam mnóstwo dokumentów Word z nieco "uszkodzonymi" tabelami. Byłem w stanie zautomatyzować większość procesu naprawy, ale jeden problem wciąż jest poza mną.Słowo VBA - Eliminuj pływające tabele obiektów

Wiele stołów to obiekty pływające - gdy pokazuję ukryte znaki formatowania, widzę kotwicę obok stołu. Nie mogę zostawić dokumentów w ten sposób, muszę zrobić wszystko w linii.

Mam segment kodu, który "naprawia" to, ale nie sądzę, że jest to dobre rozwiązanie. Zmieniając zawijanie tekstu z "Brak" (domyślnie - co chcę, żeby było) na "Wokół" i z powrotem na "Brak", zostanie to naprawione. Kod to:

Selection.Tables(1).Rows.WrapAroundText = True 
Selection.Tables(1).Rows.WrapAroundText = False 

Jestem pewien, że jest lepszy sposób na zrobienie tego. Czy ktoś wie o czymś, co zadziała? Dzięki!

Odpowiedz

4

Czy możesz wysłać przykładowy dokument do pobrania, który jest uszkodzony? Słysząc, że znalazłeś kotwicę, symbol nowej linii w Word, byłbym to najlepszy sposób, aby to zrobić.

Twój kod wydaje się patrzeć na każdą tabelę, jak go wybrać, lub jak kod wybiera (?).

Dodaj to do swojego kodu, aby naprawić potencjalny problem.

For Each Table In Selection.Tables 
    If Table.Rows.WrapAroundText = True Then 
     Table.Rows.WrapAroundText = True 
     Table.Rows.WrapAroundText = False 
    End If 
Next 
+1

Hi @BlueBerry jeśli ten lub odpowiedź rozwiązała Twój pytanie należy rozważyć [zaakceptowaniem] (http: // meta. stackexchange.com/q/5234/179419) klikając znacznik wyboru. Wskazuje to szerszej społeczności, że znalazłeś rozwiązanie i dajesz reputację zarówno autorowi, jak i sobie. Nie ma obowiązku tego robić. –

7

nie mam pojęcia dlaczego trzepotanie flagi WrapAroundText rozwiązuje problem, VBA ma dużo dziwactw w tym stylu.

Automatyzacja tę metodę do wszystkich tabel w dokumencie jest dość prosta:

Dim i as Integer 
For i=1 to Len(ActiveDocument.Tables) 
    ActiveDocument.Tables(i).Rows.WrapAroundText = True 
    ActiveDocument.Tables(i).Rows.WrapAroundText = False 
Next i