<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: проверка орфографии через Word.Application]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=91</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=91&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: проверка орфографии через Word.Application».]]></description>
		<lastBuildDate>Wed, 12 Dec 2007 07:00:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: проверка орфографии через Word.Application]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=6930#p6930</link>
			<description><![CDATA[<p>Поскольку Application.Selection может меняться в процессе проверки, скрипт выше может приводить иногда к неожиданным результатам. Улучшенный вариант скрипта от <strong>alexii</strong>, без использования Application.Selection.<br /></p><div class="codebox"><pre><code>&#039; Скопируйте нижеследующий текст в буфер обмена для проверки работы скрипта:
&#039; У папа была сабака, он её любыл, она зъела кусок мяса, он иё убыл.
&#039;
&#039; Если Вы соглашались на такие же замены при проверке орфографии, как и я,
&#039; то получите в буфере обмена нижеследующий результат:
&#039; У папа была собака, он её любил, она съела кусок мяса, он ее убыл.
&#039;
&#039; Обратите внимание, что «папа» и «убыл» считаются правильными с точки зрения орфографии
&#039; и к замене, при проверке, не предлагаются.

Option Explicit

Const wdPasteText = 2
Const wdDoNotSaveChanges = 0

Dim objWord
Dim objDoc

Dim intErrorCode

intErrorCode = 0

Set objWord = WScript.CreateObject(&quot;Word.Application&quot;)
Set objDoc = objWord.Documents.Add

With objDoc
    On Error Resume Next
    
    .Range.PasteSpecial 0, False, 0 ,False, wdPasteText
    
    If Err.Number = 0 Then
        On Error Goto 0
        
        If Not objWord.CheckSpelling(.Range.Text) Then
            .CheckSpelling
            .Range.Copy
        End If
    Else
        intErrorCode = 1
        WScript.Echo &quot;В буфере обмена отсутствуют поддерживаемые форматы данных&quot;
    End If
    
    .Close wdDoNotSaveChanges
End With

objWord.Quit wdDoNotSaveChanges

Set objDoc = Nothing
Set objWord = Nothing

WScript.Quit intErrorCode</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Wed, 12 Dec 2007 07:00:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=6930#p6930</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: проверка орфографии через Word.Application]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=235#p235</link>
			<description><![CDATA[<p>Скрипт проверяет орфографию текста, находящегося в буфере обмена. Исправленный текст после проверки копируется туда же. Для работы скрипта необходим установленный MS Word.<br /></p><div class="codebox"><pre><code>On Error Resume Next
Set oWD = WScript.CreateObject(&quot;Word.Application&quot;)
oWD.Visible = False
oWD.Documents.Add
oWD.Selection.Paste
If Err.number &lt;&gt; 0 Then
    MsgBox &quot;Буфер обмена пуст!&quot;
    oWD.ActiveDocument.Close wdDoNotSaveChanges
    oWD.Quit
    Set oWD = Nothing
    Set oWD = Nothing
    WScript.Quit
End If
Set RangeOriginal = oWD.ActiveDocument.Range(0, oWD.Selection.End)
If oWD.CheckSpelling(RangeOriginal) = False Then
    oWD.ActiveDocument.CheckSpelling
    Set RangeCorrected = oWD.ActiveDocument.Range(0, oWD.Selection.End)
    RangeCorrected.copy
    If RangeCorrected.Words.Count &gt; 7 Then
        Cnt = RangeCorrected.Words.Count
        Status = &quot;Текст, начинающийся с: &quot; &amp; _
        RangeCorrected.Words.Item(1) &amp; &quot; &quot; &amp; RangeCorrected.Words.Item(2) &amp; &quot; &quot; &amp; _
        RangeCorrected.Words.Item(3) &amp; &quot;.....&quot; &amp; vbCRLF &amp; &quot;и заканчивающийся: .....&quot; &amp; _
        RangeCorrected.Words.Item (Cnt - 2) &amp; &quot; &quot; &amp; RangeCorrected.Words.Item(Cnt - 1) &amp; _
        &quot; &quot; &amp; RangeCorrected.Words.Item(Cnt) &amp; vbCRLF &amp; &quot;проверен. &quot; &amp; _
        &quot;Исправленный текст скопирован в буфер обмена.&quot;
    Else
        Status = &quot;&lt;&lt; &quot; &amp; RangeCorrected &amp; &quot; &gt;&gt;&quot; &amp; vbCRLF &amp; &quot;был проверен.&quot; &amp; _
        &quot; Исправленный текст скопирован в буфер обмена.&quot;
    End If 
Else
    Status = &quot;Проверка завершена. Текст не содержит ошибок.&quot;
End If
oWD.ActiveDocument.Close wdDoNotSaveChanges
oWD.Quit
Set oWD = Nothing
MsgBox Status</code></pre></div><p>Скрипт опубликовал <strong>tubudum</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Fri, 04 Aug 2006 10:28:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=235#p235</guid>
		</item>
	</channel>
</rss>
