Czy istnie gotowe rozwiązanie (wbudowane w Worda albo gotowe makro), które pomaga szybko przenieść spójniki typu: "i", "z", "o" itp. z końca wiersza na początek następnego? (pracuję na Microsoft Office Word2003)
To dosc stary kod, z okolic 1998 roku, ale powinien dzialac. napisane dla Word 97, ale problemu nie powinno byc z innymi wersjami:
MaxLines = ActiveDocument.BuiltInDocumentProperties(wdPropertyLines)
For i = 1 To MaxLines
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=i, Name:=""
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
With Selection.Characters
If .Count > 4 Then
If (.Item(.Count - 2) = " ") And (.Item(.Count - 1) <> " ") And (.Item(.Count) = " ") Then
.Item(.Count) = " " //<- Tu jest znak Ctrl+_Shift+Spacja!
End If
End If
End With
Next
Kod działa, ale przy kopiowaniu ze strony twarda spacja zamieniła mi się na zwykłą i nie wiem, jak ją wstawić w skrypcie (nie działa Ctrl+Shift_Space ani kopiowanie z Worda) :|
Napisz jeszcze, jak wstawić znak twardej spacji do edytora, ok? ;)
Kurde, w Wordzie 97 dzialalo z wstaiwnieniem do kodu normalnie Ctrl+Shift+Space, w nowszych wersjach fucktycznie jest jakis babol... Poszukam jak cos znajde dam znac.
// EDIT
Daj Chr(160) i po sprawie
Znak twardej spacji to "Chr(11)" deklarujesz ją np:
Text:=Chr(11)
zachowa Ci się w ten sposób jakbyś wykonał kombinacje shift+enter
pozwoli to przenieść litery do nowego wiersza nie ingerując w formatowanie tekstu.
Powodzenia
Nieeee. Twarda spacja to Shift+Ctrl+Spacja. I to daje w wyniku kod 160. Sprawdzalem sobie to w Wordzie makrem, ktore zczytalo ASCII znaku wprowadzonego na w dokumencie. Shift + Enter to nowa linia nie twarda spacja.
Bardzo fajny kod. Troszkę poprawiłem, zgodnie z tym co koledzy pisali powyżej.
Działa świetnie w Word 2007.
MaxLines = ActiveDocument.BuiltInDocumentProperties(wdPropertyLines)
For i = 1 To MaxLines
Selection.GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=i, Name:=""
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
With Selection.Characters
If .Count > 4 Then
If (.Item(.Count - 2) = Chr(32)) And (.Item(.Count - 1) <> Chr(32)) And (.Item(.Count) = Chr(32)) Then
.Item(.Count) = Chr(160)
End If
End If
End With
Next