[Word2003/makro] Niełamalna spacja po pojedynczych znakach

Witam serdecznie.

Miałbym do Szanownych grupowiczów prośbę. Potrzebuję makro do Worda które w funkcjonalny sposób po każdym pojedynczym znaku (litera, cyfra) zamieni spację na non breaking space.

Pozdrawiam!

sulimak , sam nie możesz zrobić sobie takiego makra, wystarczy użyć do tego rejestratora makr.

Witam.

Oto przykładowy zapis z kodu jaki mi wygenerował rejestrator.

Minus jest jeden, każdy wyraz (a, i, w, u, o etc.) muszę oddzielnie dodawać. Czy nie ma jednej formuły, coś w rodzaju %1, tak żebym w ten sposób określił iż makro ma się tyczyć wszystkich wyrazów jednoliterowych.

Selection.Find.Execute Replace:=wdReplaceAll

    With Selection.Find

        .Text = " i "

        .Replacement.Text = " i^s"

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

Pozdrawiam.

sulimak, kod Twojego makra może nie dawać zadowalających efektów, jeżeli w tekście wystąpi ciąg pojedynczych znaków rozdzielanych spacjami, zaobserwowałem, że tylko co drugi taki znak będzie miał non breaking space po sobie

poniższy kod dotyczy zakresu cyfr "0…9’

#dla dużych liter ‘A…Z’ w pierwszej linijce należy zmienić, makro w tym przypadku zmieni występujące w tekście małe litery na duże (tak u mnie się stało)

For i = 65 To 90

#dla małych liter ‘a…z’ w pierwszej linijce należy zmienić

For i = 97 To 122

For i = 48 To 57

    Selection.Find.Execute Replace:=wdReplaceAll

    With Selection.Find

        .Text = " " + Chr(i) + " "

        .Replacement.Text = " " + Chr(i) + "^s"

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

Next i

jeżeli chciałbyś rozszerzyć listę znaków, to umieść odpowiednie wartości w pętli For z tablicy ASCII http://www.programuj.com/ascii.php

PS:jeżeli mój post jest nieprzydatny lub błędny proszę o prywatną wiadomość w celu modyfikacji tego co napisałem

Witam, zrodził się problem. Ogólnie skrypt działa dobrze, spełnia swoje zadanie, niemniej kastruje duże, pojedyncze litery na początku zdania zamieniając je na małe litery (Przykład: “Idziemy do szkoła w piątek. W sobotę wręcz przeciwnie.”).

'

' DUŻE LITERY

'

For i = 65 To 90

    Selection.Find.Execute Replace:=wdReplaceAll

    With Selection.Find

        .Text = " " + Chr(i) + " "

        .Replacement.Text = " " + Chr(i) + "^s"

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

Next i

'

' MAŁE LITERY

'

For i = 97 To 122

    Selection.Find.Execute Replace:=wdReplaceAll

    With Selection.Find

        .Text = " " + Chr(i) + " "

        .Replacement.Text = " " + Chr(i) + "^s"

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

Next i

Złączono Posta _: 27.09.2007 (Czw) 14:12_Mam! Chodziło o zmianę na:

MatchCase = False