Z góry serdeczne dzięki!
Ola
Tak na szybko, to przychodzi mi na mysl, zeby zastosowac "Znajdz i Zamien"
zamieniasz " w " (<spacja>w<spacja>) na <spacja>w<spacja_nierozdzielajaca>
potem z pozostalymi literkami
Pozdrawiam
Michal
Dzięki - mniej więcej tak kombinowałam i udało się, no poza tym, że gdy
zamieniałąm literkę A, to mi też pozamieniało duże A na małe a w nazwie
reaktora badawczego A ;-)) Ale to drobiazg... Jednak myślałam że Word ma
jakąś taką automatyczną opcję, tak jak np. niezostawianie sierot i wdów
czyli nagłówków samotnych na dole strony... Ale ok, ważny jest efekt, a nie
metoda ;) Dzięki!
Było kiedyś takie makro "jednoliterówka", kilka razy poprawiane.
Z tego zostało mi w komputerze:
Sub Jednoliterówka4()
Dim JdnLtr As Variant
Dim i As Long, j As Long
Dim ChTxt As String, l_1 As String, l_2 As String
Dim rng As Range, rng1 As Range
JdnLtr = Array("A", "U", "Z", "W", "O", "w", "o", "i", "a", "z", "u",
"np.")
For j = LBound(JdnLtr) To UBound(JdnLtr)
ChTxt = Chr(32) & JdnLtr(j) & Chr(160)
Selection.Find.ClearFormatting
With Selection.Find
.Text = ChTxt
.MatchWildcards = False
.MatchCase = True
.Replacement.ClearFormatting
.Replacement.Text = Chr(32) & "^&" & Chr(32)
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
Next j
For j = LBound(JdnLtr) To UBound(JdnLtr)
ChTxt = Chr(32) & JdnLtr(j) & Chr(32)
Selection.Find.ClearFormatting
With Selection.Find
.Text = ChTxt
.MatchWildcards = False
.MatchCase = True
.Replacement.ClearFormatting
.Replacement.LanguageID = wdFinnish
.Replacement.Text = ""
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
Next j
Set rng = ActiveDocument.Range
With rng.Find
.ClearFormatting
.Text = ""
.LanguageID = wdFinnish
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do
rng.Find.Execute
If rng.Find.Found = True Then
rng.LanguageID = wdPolish
Set rng1 = ActiveDocument.Range(rng.End + 1, rng.End + 1)
If rng.Information(wdFirstCharacterLineNumber) <> _
rng1.Information(wdFirstCharacterLineNumber) Then
rng.Text = Left(rng.Text, Len(rng.Text) - 1) & Chr(160)
End If
rng.Start = rng.End
'ta linia powyżej była nie w tym miejscu co potrzeba
End If
Loop While rng.Find.Found = True
End Sub
Makro bardzo dobrze działało, nie pamiętam czy przytoczone wyżej to wersja
ostateczna?
Czy autorem makra był pxd74? To było jakiś czas temu, kiedyś odnalazłem tą
dyskusję wpisując w google:
"to makro wymaga optymalizacji", ale dziś nie znajduje!
Pozdrawiam, Andrzej.