<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH, jscript поиск и замена в надписях MS Word]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=16006&amp;type=atom" />
	<updated>2021-01-27T19:14:00Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=16006</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145530#p145530" />
			<content type="html"><![CDATA[<p>По хорошему, нужен сам документ, чтобы воспроизвести «затык» и разобраться, что не так.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-01-27T19:14:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145530#p145530</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145527#p145527" />
			<content type="html"><![CDATA[<p><strong>putrsa</strong>, приветствую. Не уверен, но возможно это позволит ускорить замену: <a href="https://stackoverflow.com/a/26266598">ссылка</a> ?</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2021-01-27T17:49:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145527#p145527</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145239#p145239" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>alert(tdoc.StoryRanges.Count);</code></pre></div><p> возвращает 2, значит все-таки не пустая коллекция<br />в коде <strong>Rumata </strong> сторесы перебирает, но замена все равно не происходит, хотя и ошибок не показывает<br /></p><div class="codebox"><pre><code>var ranges  = new Enumerator(tdoc.StoryRanges);
for ( ; !ranges.atEnd(); ranges.moveNext()) {
    var item = ranges.item();
    item.Find.Execute(&#039;aaaa&#039;, false, false, false, false, false, true, false, false, &#039;bbbb&#039;, 2);
}</code></pre></div><p>сделал пока так:<br /></p><div class="codebox"><pre><code>
        sh_count=tdoc.Shapes.Count;
		tdoc.Content.Find.Execute(&#039;aaaa&#039;, false, false, false, false, false, true, false, false, &#039;bbbb&#039;, 2);
		for (var i=1;i&lt;sh_count;i++){
			tdoc.Shapes.Item(i).Select();
			tdoc.Application.Selection.Range.Find.Execute(&#039;aaaa&#039;, false, false, false, false, false, true, false, false, &#039;bbbb&#039;, 2);
			}
</code></pre></div><p>сначала меняю в тексте, а потом перебираю все фигуры, но это дико медленно</p>]]></content>
			<author>
				<name><![CDATA[putrsa]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25443</uri>
			</author>
			<updated>2021-01-22T06:20:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145239#p145239</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145195#p145195" />
			<content type="html"><![CDATA[<p>В JS делается немного по другому:</p><div class="codebox"><pre><code>
var ranges  = new Enumerator(tdoc.StoryRanges);

for ( ; !ranges.atEnd(); ranges.moveNext()) {
    var item = ranges.item();
    bla-bla-blah
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-01-21T19:53:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145195#p145195</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145193#p145193" />
			<content type="html"><![CDATA[<p>Работает:<br /></p><div class="codebox"><pre><code>Option Explicit

Const wdFindContinue = 1
Const wdReplaceAll = 2


Dim objWord
Dim objRange


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

With objWord.Documents.Open(&quot;C:\Мои проекты\0334\Sample.doc&quot;)
	For Each objRange In .StoryRanges
		With objRange
			With .Find
				.ClearFormatting
				.Text = &quot;привет&quot;
				
				With .Replacement
					.ClearFormatting
					.Text = &quot;мир&quot;
				End With
				
				.Forward = True
				.Format = False
				.MatchCase = False
				
				.Wrap = wdFindContinue
				
				.Execute , , , , , , , , , , wdReplaceAll
			End With
		End With
	Next
End With

objWord.Visible = True

Set objWord = Nothing

WScript.Quit 0</code></pre></div><p>Возможно, для перебора коллекции .StoryRanges надо пользовать иное:<br /></p><div class="quotebox"><blockquote><p>Use the Enumerator object to iterate members of a collection.</p></blockquote></div><p>«WScript.Echo(tdoc.StoryRanges.Count);» — что покажет?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-01-21T19:50:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145193#p145193</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145182#p145182" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>е<br /></p><div class="codebox"><pre><code>for(itm in tdoc.StoryRanges){
}</code></pre></div><p>не срабатывает ни разу, StoryRanges возвращает пустую коллекцию, возможно через ActiveX не работает</p>]]></content>
			<author>
				<name><![CDATA[putrsa]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25443</uri>
			</author>
			<updated>2021-01-21T19:13:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145182#p145182</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145162#p145162" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p><strong>Content Property</strong></p><p>Returns a Range object that represents the main document story.</p></blockquote></div><p>А надписи сюда не входят.</p><p>Ну, например (на VBA):<br /></p><div class="codebox"><pre><code>Option Explicit

Sub Sample()
    Dim objRange As Range
    
    For Each objRange In ActiveDocument.StoryRanges
        With objRange
            With .Find
                .ClearFormatting
                .Text = &quot;привет&quot;
                
                With .Replacement
                    .ClearFormatting
                    .Text = &quot;мир&quot;
                End With
            
            .Forward = True
            .Format = False
            .MatchCase = False
            
            .Wrap = wdFindContinue
            
            .Execute Replace:=wdReplaceAll
            End With
        End With
    Next objRange
End Sub
</code></pre></div><p>— будет искать и заменять везде.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-01-21T17:09:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145162#p145162</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH, jscript поиск и замена в надписях MS Word]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=145156#p145156" />
			<content type="html"><![CDATA[<p>нижеприведенный код четко меняет заданные слова в простом тексте, а вот в текстовых полях(надписях) ни в какую, подскажите, куда копать? ворд использую 2007, поверял на 2016 тоже не работает<br /></p><div class="codebox"><pre><code>
workpath=&#039;d:\\docGen\\&#039;;
	WordApp=new ActiveXObject(&quot;Word.Application&quot;);
	tdoc=WordApp.Documents.Add(workpath+&quot;t_dod71.dotx&quot;);
	tdoc.Content.Find.Execute(&#039;ппппп&#039;, false, false, false, false, false, true, false, false, &quot;ццццц&quot;, 2);
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[putrsa]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25443</uri>
			</author>
			<updated>2021-01-21T16:22:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=145156#p145156</id>
		</entry>
</feed>
