5-§. MS Word программасында VBA дан пайдаланып мәселелер шешиў
5. 1. Символларды алмастырыў ушын макрос жаратыў
Пайдаланыўшы қандай-да бир текстти фрагментин белгили дәрежеде латын шрифтында билместен көп терип қойған ўақытларда ўақтын тежеў ушын оны кириллица ҳәриплерине өзгеритиўде макрос жаратыўға туўра келеди ямаса керисинше жағдай ушында латынды кириллицаға өзгеритиўде керек болыўыда мүмкин. Бундай макрослар жәрдеминде ҳақыйқатында да ўақытты уттырмаўға ерисиледи. Демек төмендеги мысалда кириллицаны латынға ямаса керисинше өзгеритиў ушын макрос жаратыў қарап өтиледи. Макросты жаратыў ушын төмендеги әмеллер орнатылады.
Сервис менюсынан Сервис → Макрос → Начать → запись-камандасы таңланады ҳәм төмендеги айна пайда болады.
2. Пайда болған айнадағы «Имя макроса» майданына макрос аты киритиледи мысалы: «Перевод» «Макрос доступен для» дизиминен «Всех документов (Normal. dot)» сайланады. Бунда макрос шаблонға жазылып барлық ашылып атырған документлерде ислей алады. Усы әмелди орынлағаннан кейин екинши бир диалог айнасы ашылады ол «Настройка клавиатуры».
3. Ашылған диалог айнасы макросты қосыў ушын [Ctrl+I] клавишлар комбинациясын орнатып Назначить кнопкасы басылады кейин Закрыть басылады ҳәм төмендеги панель ашылады. «Остановить Запис»
4. Пайда болған «Макрорекордер» панели басланады бос макрос пайда болады.
5. Сервис → макрос → макросы камандасы орынланады ҳәм төмендеги макрос диалог айнасы пайда болады.
6. Макрос диалог айнасындағы «Имя» дизиминен «Перевод» макросын таңлаймыз ҳәм «Изменить» кнопкасы басылады.
Visual Basic айнасы ашылады ҳәм ол айнасы NewMacros аты менен аталған болады.
7. Төмендеги келтирилген процедура кодын киритемиз.
Sub Перевод ( )
Dim InputString As String
'бул өзгериўши берилген ҳүжжеттеги белгиленген областтағы 'символларды сақлаў ушын ислетиледи
Dim OutputStrinng As String
'бул өзгериўши өзгертирилгеннен кейинги нәтийжени сақлаў ушын ' 'керек болады.
InputString = Selection.Range Text
'ҳүжжеттиң белгиленген областындағы символлары InputString 'өзгериўшисине жазылады
OutPutString=Transli(InputString)
'OutPutString өзгериўшисине белгиленген соңғы нәтийже жазылады
Selection.Range.Text= OutPutString 'бул әмел нәтийжесинде 'OutPutString өзгериўшисиндеги мәнис белгиленген тексттиң орнына 'жазылады
End Sub
Көринип турғандай бул программа кодында белгиленген текст Input String өзгериўшисине жазылады ҳәм ол қосымша программа функциясы Translit арқалы өзгертириледи. Пайда болған нәтийже усы функцияға меншикленеди ҳәм OutPutString өзгериўшисине жазылады.
8. Усы айнаға, модулға қосымша программа функция коды критиледи.
Редакторлаў айнасындағы усы модулға қосымша программа функция кодын киритемиз. Ол төмендегише
Public Function Translit(D As String)
Dim Amountsimbol As Integer
'Берилген қатардағы есапқа алыныўы болған символлар санын сақлаў 'ушын пайдаланатуғын өзгериўши.
Dim i As Integer
'сыртқы циклда пайдаланыў ушын өзгериўши
Dim j As Integer
' ишки циклда пайдаланыў ушын өзгериўши.
Dim Resultring As String
'символларды алмастырыўда нәтийжелерди жазыў ушын 'пайдаланатуғын өзгериўши төмендеги костанта жәрдеминде латын 'ҳәриплерин белгилеймиз.
Const LatString AsString = qwertyuiop[]asdfghgkl;zxcvbnm,. /QWERTYUIOP{}ASDFGHGKL:ZXCVBNM<>?”
'Кириллица ҳәриплеринен туратуғын қатарлық константа
Const KirString As String= “йцукенгшщзхъфывапролджэячсмитьбю. ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬ_БЮ ,”
'Берилген қатардағы символлар санын есаплаймыз.
AmountSymbol=Len(D)
'Ислетиў керек болған өзгериўшини тазалаймыз.
ResultString= “”
'Берилген символдан латын ҳәриплерден турыўын тексеремиз
If Asc(D) < 192 Then
'латын символларын кириллица символларына алмастырымыз. Буның 'ушын берилген қатардағы символларды таңлаўға цикл дүземиз
For i =1 To AmountSimbol
'Латын символларын таңлап алыў ушын LatString константасы ушын 'цикл дүземиз
For i =1 To 65 'Lanstring константасындағы символлар саны 65 ге 'тең.
'Берилген қатардағы символдың биреўлик тырнақша екенлигин 'тексеремиз
If Asc(Mid(D, i1l ))=145 Then
'Егер биреўлик тырнақша болса, онда ислетиў керек өзгериўшиге э 'ҳәриби символын қосады
RecultString=ResultString+ “Э”
Exit For
End If
'Берилген қатардағы символын екеўлик тырнақша екенлигин 'тексеремиз
If Asc(Mid(D, i,1))=147 Then
'Егер символ екеўлик тырнақша болса, онда ислетиў керек өзгериўшиге '“Э” үлкен ҳәрибин қосамыз.
RecultString= RecultString + ‘Э’
Ext For
End If
'Берилген қатардағы кейинги символды анықлаймыз ҳәм усы символға 'константадағы сәйкес болған символды табамыз.
If Mid(D, i,1)=Mid(KirString, g, l) Then
RecultString өзгериўшисине сәйкес кирил символын қосамыз яғный
RecultString= RecultString + Mid(KirStrung, g, l)
Ext For
End If
Next
Next
Else
'Егер берилген қатардың биринши символы кириллица символында болса
For I =l To AmountSymbol
For g=i To 66
If Asc(MID(D, i, l ))=221 Then
'Егер символ үлкен «Э» ҳәриби болса, онда RecultString өзгериўшисине екеўлик 'тырнақша қосамыз
ResultString = ResultString + ’’’’’’
Exit For
End If
If Asc(Mid(D, i, l ))=253 Then
'Егер символ киши «Э» ҳәрибине тең болса, онда ResultString 'өзгериўшисине биреўлик тырнақшаны қосамыз.
ResultString= ResultString + “” “” “”
Exit For
End If
'Берилген қатардағы кейинги символды анықлаймыз ҳәм оған сәйкес 'болған символды константадан табамыз
If (Mid(D, i l )=Mid (KirString, g, i) Then
ResultString = ResultString + Mid(LatString, g, l)
Exit For
End If
Next
Next
End If
'Нәтийжени беремиз
Translit = ResultString
End Function
Тексериў ушын макросты орнатамыз. Егерде текстти кириллица символларын киритсек, онда ол латын [Ctrl+I] клавишлары жәрдеминде орынланады. Егер текстти кириллица ҳәриплериде киритсек, онда макрос арқалы латынша, ал текстти латын ҳәриплеринде киритсек онда макрос арқалы сәйкес кириллица ҳәриплери қойылады.
Бундай макрослар билместен кирилда жазыў керек болған текстти латында ямаса керисинше жағдайлар ушырасқанда пайдаланылады.
Do'stlaringiz bilan baham: |