VBA Türkçe Karakter Sorunu

Katılım
7 Mayıs 2009
Mesajlar
65
Excel Vers. ve Dili
Excel 2007
Merhabalar,

Dün forum uzmanlarından Ömer bey'in yazmış olduğu VBA kodu,
evdeki PC'mde kusursuz olarak çalışmaktayken ofisteki PC'de
istediğim sonucu vermiyor.
Kodun amacı A hücresinde yer alan text'i kelime kelime sütunlara parçalamak,
fakat ofisteki PC'de bunu yaparken türkçe bir karaktere rastladığında onu tamamen atıp kelimenin o harften sonraki kısmını da kelime gibi parçalayıp başka hücreye atıyor.

Şöyle bir örnek vereyim:

"havalimanına" olarak parçalanması gereken kelime,
"havaliman" ve "na" olarak iki ayrı hücreye dağıtılıyor.

veya "bildirmiş" olarak parçalnaması gereken kelime "bildirmi" olarak
parçalanıyor...


Kodda kesinlikle hata yok, çünkü evdeki PC'de ve Ömer bey'in kendi PC'sinde
hatasız çıktılar aldık, muhtemelen bnm ofisteki PC'nin dil ayarları ile ilgili bir sıkıntı var, lütfen bana bu konuda yardım edin, bu mevzu çok canımı sıkmış durumda dünden beri denemediğim şey kalmadı.

not: bu arada evde de şirkette de Excel 2007 İngilizce versiyonunu kullanıyorum, fakat evdeki PC windows türkçe, şirketteki windows ingilizce sürümü.
Kodu görmek isteyenler için aşağıda kodu da paylaşıyorum.

Saygılarımla,

---------

Sub Duzenle()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set deg = CreateObject("VBScript.Regexp")
deg.Pattern = "[^a-z0-9\ç\ğ\i\ı\ö\ş\ü\ ]"
deg.Global = True

For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
Cells(i, "A") = KucukHarf(Cells(i, "A"))
Cells(i, "A") = Trim(deg.Replace(Cells(i, "A"), " "))
Next i
Set deg = Nothing

Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:= _
xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:= _
True, Space:=True

Cells.HorizontalAlignment = xlLeft
Cells.EntireColumn.AutoFit

Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub
'........... KüçükHarfe Çeviren Ktf ....................
Function KucukHarf(Veri As String)
KucukHarf = LCase(Replace(Replace(Veri, "İ", "i"), "I", "ı"))
End Function
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Excel veriyonundan değil işletim sisteminden kaynaklanan bir sorun var diye düşünüyorum.

Benim deneme fırsatım olmadığı için kodlarda birkaç değişiklik yaparak sizden denemenizi rica edeceğim.

Bu şekilde denermisiniz. Küçük harfe çevirme olayını kaldırdım.

Kod:
Sub Duzenle()
 
Application.ScreenUpdating = False
    Application.DisplayAlerts = False
 
    Set deg = CreateObject("VBScript.Regexp")
    deg.Pattern = "[^a-zA-Z0-9\Çç\Ğğ\İi\Iı\Öö\Şş\Üü\ ]"
    deg.Global = True
 
    For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        Cells(i, "A") = Trim(deg.Replace(Cells(i, "A"), " "))
    Next i
    Set deg = Nothing
 
    Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:= _
    xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:= _
    True, Space:=True
 
    Cells.HorizontalAlignment = xlLeft
    Cells.EntireColumn.AutoFit
 
    Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
End Sub
.
 
Katılım
7 Mayıs 2009
Mesajlar
65
Excel Vers. ve Dili
Excel 2007
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:= _
xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:= _
True, Space:=True

kodun bu kısmı "no data was selected to parse" hatası veriyor.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Aynı dosyada mı denediniz. Denediğiniz dosyayı eklermisiniz.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Verileri A sütunundan FF sütununa almışsınız. Hatayı bu yüzden alıyorsunuz.

Bu şekilde deneyiniz.

Kod:
Sub Duzenle()
 
Application.ScreenUpdating = False
    Application.DisplayAlerts = False
 
    Set deg = CreateObject("VBScript.Regexp")
    deg.Pattern = "[^a-zA-Z0-9\Çç\Ğğ\İi\Iı\Öö\Şş\Üü\ ]"
    deg.Global = True
 
    For i = 1 To Cells(Rows.Count, "FF").End(xlUp).Row
        Cells(i, "FF") = Trim(deg.Replace(Cells(i, "FF"), " "))
    Next i
    Set deg = Nothing
 
    Columns("FF:FF").TextToColumns Destination:=Range("FF1"), DataType:= _
    xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:= _
    True, Space:=True
 
    Cells.HorizontalAlignment = xlLeft
    Cells.EntireColumn.AutoFit
 
    Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
End Sub
.
 
Katılım
7 Mayıs 2009
Mesajlar
65
Excel Vers. ve Dili
Excel 2007
Ömer Bey özür dilerim saçma bir hata yapmışım.

Ama dil ayarları ile ilgili problemi çözdüm sonunda, bir önceki kodunuzu şirket PC'mde de sorunsuz olarak çalıştırabiliyorum. İsterseniz nasıl çözdüğümü de belirteyim böyle bir problemle karşılaşan arkadaşlar aynı sıkıntıyı çekmesinler:

Control Panel--->Regional and Language Options--->Advanced---> Language for non-Unicode Programs = Turkish


Ömer Bey tekrar tekrar teşekkür ederim, iananıyorum ki bu yazdığınız kod benim gibi müşteri analizi yapan birçok arkadaşa çok büyük faydalar sağlayacaktır.

Saygılar&iyi çalışmalar.
 
Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Rica ederim, problemin çözüldüğüne sevindim. İyi çalışmalar..

.
 
Üst