Microsoft Word-ს ნაგულისხმევად არ გააჩნია ქართული ენის ავტომატური გადატანების მხარდაჭერა. შედეგად, ტექსტის ორმხრივი გასწორებისას (Justify) სიტყვებს შორის ხშირად ჩნდება დიდი, უშნო გამოტოვებები.
ამ ხელსაწყოს (VBA მაკრო) ალგორითმი დაფუძნებულია ქართული სალიტერატურო ენის წესებზე: იგი ითვალისწინებს მარცვლების სტრუქტურას, იცავს კიდურა ხმოვნებს და არ აცალკევებს ჰარმონიულ თანხმოვანთკომპლექსებს (მაგ: ფხ, თხ, ცხ და ა.შ.).
როგორ მუშაობს? პროგრამა იყენებს ფარულ გადატანის ნიშნებს (Optional Hyphen). ეს ნიშნავს, რომ ტირე გამოჩნდება მხოლოდ მაშინ, როცა სიტყვა ხაზის ბოლოში მოხვდება. თუ ტექსტს დაავიწროებთ ან გააფართოებთ, ტირეები ავტომატურად გაქრება ან გადანაწილდება, რაც სრულყოფილ ვიზუალურ იერსახეს უნარჩუნებს დოკუმენტს.
📥 ნაბიჯი 1: კოდის კოპირება
დააკოპირეთ ქვემოთ მოცემული სრული კოდი (VBA Module):
Sub CreateGeorgianHyphenationForSelection()
Dim regEx As Object
Dim rng As Range
Dim wordRng As Range
Dim vowels As String
Dim w As String
Dim idx As Integer
' Check if text is selected
If Selection.Type = wdSelectionIP Or Selection.Text = "" Then
MsgBox "Please select the text block first!", vbExclamation, "No Text Selected"
Exit Sub
End If
Set rng = Selection.Range
' RegExp initialization for single word validation
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "^[" & ChrW(4304) & "-" & ChrW(4336) & "]+$"
vowels = ChrW(4304) & ChrW(4308) & ChrW(4312) & ChrW(4317) & ChrW(4323)
Application.ScreenUpdating = False
' Loop through each word in selection securely (handles tables and complex layouts)
For Each wordRng In rng.Words
w = Trim(wordRng.Text)
' Clean punctuation from the end of the word if any
Do While Len(w) > 0
If InStr(".,;:!?()""'[]{}«»-–—" & vbCr & vbLf & Chr(7), Right(w, 1)) > 0 Then
w = Left(w, Len(w) - 1)
Else
Exit Do
End If
Loop
' Validate if it's a Georgian word and longer than 4 characters
If regEx.Test(w) And Len(w) > 4 Then
Dim vowelCount As Integer
vowelCount = GetVowelCount(w, vowels)
If vowelCount > 1 Then
' Process word from end to beginning
For idx = Len(w) - 1 To 2 Step -1
If IsValidGeorgianHyphenationPoint(w, idx, vowels) Then
Dim hyphenRng As Range
' Define local hyphen position inside the word range
Set hyphenRng = wordRng.Duplicate
hyphenRng.End = hyphenRng.Start + idx - 1
hyphenRng.Collapse wdCollapseEnd
' Insert native Soft Hyphen
hyphenRng.InsertBefore Chr(31)
End If
Next idx
End If
End If
Next wordRng
Application.ScreenUpdating = True
MsgBox "Georgian hyphenation applied to selection successfully!", vbInformation, "Success"
End Sub
Function GetVowelCount(w As String, vowels As String) As Integer
Dim count As Integer, j As Integer
count = 0
For j = 1 To Len(w)
If InStr(vowels, Mid(w, j, 1)) > 0 Then count = count + 1
Next j
GetVowelCount = count
End Function
Function IsValidGeorgianHyphenationPoint(w As String, idx As Integer, vowels As String) As Boolean
Dim l As Integer
l = Len(w)
If idx = 2 And InStr(vowels, Left(w, 1)) > 0 Then
IsValidGeorgianHyphenationPoint = False
Exit Function
End If
If idx = l And InStr(vowels, Right(w, 1)) > 0 Then
IsValidGeorgianHyphenationPoint = False
Exit Function
End If
Dim vLeftIdx As Integer, vRightIdx As Integer
Dim k As Integer
vLeftIdx = 0
For k = idx - 1 To 1 Step -1
If InStr(vowels, Mid(w, k, 1)) > 0 Then
vLeftIdx = k
Exit For
End If
Next k
vRightIdx = 0
For k = idx To l
If InStr(vowels, Mid(w, k, 1)) > 0 Then
vRightIdx = k
Exit For
End If
Next k
If vLeftIdx = 0 Or vRightIdx = 0 Then
IsValidGeorgianHyphenationPoint = False
Exit Function
End If
Dim consBlock As String
Dim consBlockLen As Integer
consBlock = Mid(w, vLeftIdx + 1, vRightIdx - vLeftIdx - 1)
consBlockLen = Len(consBlock)
Dim leftConsCount As Integer
leftConsCount = idx - vLeftIdx - 1
Dim harmonic As String
harmonic = "ფხ თხ ცხ ჩხ ბღ დღ ზღ ჯღ პყ ტყ წყ ჭყ"
If consBlockLen = 0 Then
If idx = vRightIdx Then
IsValidGeorgianHyphenationPoint = True
Exit Function
End If
End If
If consBlockLen = 1 Then
If leftConsCount = 0 Then
IsValidGeorgianHyphenationPoint = True
Exit Function
End If
End If
If consBlockLen >= 2 Then
Dim hCheck As String
If consBlockLen >= 3 Then
hCheck = Mid(consBlock, 2, 2)
If InStr(harmonic, hCheck) > 0 Then
If leftConsCount = 1 Then
IsValidGeorgianHyphenationPoint = True
Exit Function
End If
IsValidGeorgianHyphenationPoint = False
Exit Function
End If
End If
hCheck = Left(consBlock, 2)
If InStr(harmonic, hCheck) > 0 Then
If leftConsCount = 0 Then
IsValidGeorgianHyphenationPoint = True
Exit Function
End If
IsValidGeorgianHyphenationPoint = False
Exit Function
End If
If leftConsCount = 1 Then
IsValidGeorgianHyphenationPoint = True
Exit Function
End If
End If
IsValidGeorgianHyphenationPoint = False
End Function
Sub RemoveGeorgianHyphenationFromSelection()
Dim rng As Range
If Selection.Type = wdSelectionIP Or Selection.Text = "" Then
MsgBox "Please select the text block first!", vbExclamation, "No Text Selected"
Exit Sub
End If
Set rng = Selection.Range
Application.ScreenUpdating = False
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^-"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.Execute Replace:=wdReplaceAll
End With
Application.ScreenUpdating = True
MsgBox "Hyphenation removed from selection successfully!", vbInformation, "Cleaned"
End Sub
🛠️ ნაბიჯი 2: ინსტალაციის ინსტრუქცია (როგორ ჩავსვათ Word-ში)
ფუნქციის ერთხელ ჩაშენების შემდეგ, იგი ხელმისაწვდომი იქნება ყველა ახალ თუ ძველ დოკუმენტში.
1. კოდის ინტეგრაცია
- გახსენით Microsoft Word.
- დააჭირეთ კლავიატურაზე
Alt + F11(თუ ლეპტოპით მუშაობთ და არ გაიხსნა, სცადეთFn + Alt + F11). გაიხსნება პროგრამირების (VBA) ფანჯარა. - მარცხენა პანელში იპოვეთ გლობალური პროექტი სახელით
Normal. - დააწკაპუნეთ
Normal-ზე მაუსის მარჯვენა ღილაკით, აირჩიეთInsert>Module. - გამოსულ ცარიელ თეთრ ფანჯარაში ჩასვით (Paste) ზემოთ კოპირებული კოდი და დახურეთ VBA-ის ფანჯარა.
2. მართვის ღილაკების გამოტანა Word-ის პანელზე
იმისთვის, რომ კოდი ერთი დაწკაპუნებით ამუშავდეს, გამოვიტანოთ ღილაკები მთავარ მენიუში:
- Word-ის ზედა პანელზე (Ribbon) ნებისმიერ ცარიელ ადგილას დააწკაპუნეთ მარჯვენა ღილაკით და აირჩიეთ
Customize the Ribbon.... - მარჯვენა სვეტში მონიშნეთ რომელიმე ჩანართი (მაგალითად,
HomeანReview), დააჭირეთ ქვემოთ ღილაკსNew Group(შეგიძლიათ დაარქვათ „ქართული გადატანები“). - მარცხენა ჩამოსაშლელი მენიუდან (“Choose commands from”) აირჩიეთ
Macros. - სიებში დაინახავთ ორ ახალ ბრძანებას:
Normal.Module1.CreateGeorgianHyphenationForSelectionNormal.Module1.RemoveGeorgianHyphenationFromSelection
- მონიშნეთ თითოეული და შუაში არსებული
Add >>ღილაკით გადაიტანეთ თქვენს შექმნილ ახალ ჯგუფში. - ღილაკებზე ხელახლა დაწკაპუნებით და
Rename-ზე დაჭერით შეგიძლიათ შეუცვალოთ სახელი (მაგ: „გადატანის ჩართვა“ და „გადატანის გათიშვა“) და აირჩიოთ სასურველი ვიზუალური ხატულა (Icon). - დააჭირეთ
OK.
🚀 ნაბიჯი 3: როგორ გამოვიყენოთ?
- დოკუმენტში მონიშნეთ ტექსტის ის აბზაცი ან მთლიანი ბლოკი, სადაც გსურთ გადატანების ამუშავება.
- დააჭირეთ თქვენ მიერ შექმნილ ღილაკს „გადატანის ჩართვა“.
- მიეცით ტექსტს ორმხრივი გასწორება (Justify ან
Ctrl + J) — სიტყვები ხაზის ბოლოში იდეალურად, წესების დაცვით გაიყოფა. - თუ გადატანების გაუქმება და ტექსტის საწყის მდგომარეობაში დაბრუნება მოგინდებათ, კვლავ მონიშნეთ იგივე მონაკვეთი და დააჭირეთ ღილაკს „გადატანის გათიშვა“.
