2013-06-24 17 views
5

Kodum, MS Word 2010'da yazım denetimi etkinleştirmeli, böylece kullanıcının yazım hataları altında kırmızı alt çizgileri görebilmesi gerekir. Güncel sürümündeMS Word otomasyonu: yazım denetimi için kırmızı altı çizgilileri etkinleştiremiyor

Ben yazım denetimi sağlamak için bunu yapmak deneyin:

wordApplication.Options.CheckSpellingAsYouType = true; 
wordApplication.Options.SuggestSpellingCorrections = true; 
wordApplication.ActiveDocument.ShowSpellingErrors = true; 
wordApplication.ActiveDocument.CheckSpelling(); 

Ben Word'ü açın ve "Test texxt dizesini" yazın. Bundan sonra kodumu çalıştırıyorum ama hiçbir şey olmuyor: No underlines under texxt word

"texxt" altında alt çizgiler göremiyorum. enter image description here

Şimdi bu özelliğini kontrol edin:: Ben seçeneklerine gidersem seçeneği etkin olan "Yazarken yazım denetimi" olduğunu görüyoruz

wordApplication.ActiveDocument.SpellingErrors[0].Text 
O yazım olduğu anlamına gelir "texxt" içerecektir

aslında kontrol edildi.

Ayrıca ben sadece aynı metinde MS Word ve türünü yeniden eğer - kırmızı çizgilerdir görünür hale: enter image description here

Ben de Application.ScreenRefresh arayıp ScreenUpdating özellikleri ayarlamak için çalıştı ama bu herhangi bir etkisi vermediniz.

Not: Belgede hiç metin bulunmadığında bu kodu/makroyu başlangıçta çalıştırıyorum. Eğer bir metin varsa - işe yarıyor.

Not 2: Kesin adımlar çoğaltmak:

  1. başlatın MS Word. Seçeneklere gidin ve "yazarken yazımı denetle" özelliğini devre dışı bırakın. Word'ü yeniden başlatın.

  2. başlatın Word ve çalışma aşağıdaki makro: Metin aşağıdaki

    Options.CheckSpellingAsYouType = true 
    Options.SuggestSpellingCorrections = true 
    ActiveDocument.ShowSpellingErrors = true 
    
  3. Türü: "Deney texxt dizesini". Enter'a bas. Makro

    MsgBox ActiveDocument.SpellingErrors (1) .Text

    aşağıdaki

  4. Run

Sen MessageBox "texxt" göreceksiniz

ancak kırmızı çizgilerdir çözümü aşağıdaki bulundu Kazara

+0

Bu VBA mı? VBA, satırların sonunda noktalı virgül kullanmaz ve son satır parantez içermez. Bu değişiklikleri yaptığımda ve kod satırlarını çalıştırdığımda, metnin altı çizilir ve bunu değiştirmemi isteyen bir Yazım iletişim kutusu açılır. Kodunuzu çalıştırdığınızda hata olmaz mı? – Christina

+0

Bu C#. Ama VBA ile aynı sorunlarım var. Yalnızca belge bir metin içeriyorsa ancak boşsa ve bu makrolar soemthing yazmaya başladığımda başlıyorsa çalışır - herhangi bir kırmızı alt çizgi göremiyorum. – Oleg

+0

Bunu bir cevap olarak göndermek istemiyorum çünkü aldığınız şeyi gerçekten üretemiyorum. Ancak, makroyu çalıştırdıktan sonra Word'ün hala basit hataları otomatik olarak düzelteceğini buldum. Kırmızı çizgilerin görünmesine neden olan satırı Application.AutoCorrect.ReplaceTextFromSpellingChecker = False ekledim. – Christina

cevap

2

: Eğer kullanıcı bazı metinde yazdıktan sonra aşağıdaki kodu çağırırsam alt çizgiler gösterilir:

int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count; 
+0

Bu çözümle ilgili sorun, yeni metin eklendikten sonra her defasında bu kodu yürütmeniz gerektiğidir. – Oleg

0

Ben Oleg tarafından düşük rep nedeniyle cevabını bir yorum bırakamıyorum, ama Application.ActiveDocument.SpellingErrors.Count yöntemini kullanarak Word 2013 yöntemi kullanarak, sorunlu olabilir bazı aşılmaz neden için geçerli seçimi kaldırmak gibi görünüyor.

Şu anda seçili bir metin seçilmediğinde yalnızca Count numaralı telefonu denetleyerek bu efekti gizlemek için bir kırılma; Örneğin.:

// "document" is a Microsoft.Office.Tools.Word.Document 
var selected = document.Application.Selection.Range; 
if(Math.Abs(selected.End - selected.Start) == 0) 
{ 
    var count = document.Application.ActiveDocument.SpellingErrors.Count; 
}