<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBA: Word вставка таблицы в сроку с разделителем, замена в документе]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=11060</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=11060&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBA: Word вставка таблицы в сроку с разделителем, замена в документе».]]></description>
		<lastBuildDate>Thu, 05 Nov 2015 15:10:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBA: Word вставка таблицы в сроку с разделителем, замена в документе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=98687#p98687</link>
			<description><![CDATA[<p>Здравствуйте, идея следующая: из Excel копируем столбец, и в Word надо вставить значения в строку с разделителем например &quot;;&quot;. Делаю так, копируем колонку, ставим курсор в ворде куда нужно вставить строку, нажимаем макрос, тот создает новый документ, туда вставляет содержимое буфера обмена как текст и делам замену символа перевода строки на наш разделить, потом копируем всю строчку что получилась, закрываем этот документ без сохранения и в нашь первый документ вставляем новый буфер, в котором отредактирована строка,&nbsp; при помощи макрозаписи&nbsp; и переработки получаю следующий код:<br /></p><div class="codebox"><pre><code>  
Sub Test ()  
	Selection.PasteAndFormat (wdFormatPlainText)
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = &quot;^p&quot;
        .Replacement.Text = &quot;; &quot;
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.WholeStory
    Selection.Cut
    ActiveWindow.Close wdDoNotSaveChanges
    Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
End Sub
</code></pre></div><p>все работает отлично, за одним исключением, мельтешит окно создаваемого документа в котором ведем замену.</p><p>Решил переработать для точно обращения к документу, а не к активному документу, чтобы новый документ был не видимым, чтобы преобразование было скрытым. получил вот такой код, но он не работает!!! вставляет, копирует, но замена почему то не работает. подскажите в чем проблема.<br />вот код:</p><div class="codebox"><pre><code>    
Sub Test2 ()  
    Dim oWord As Word.Application
    Dim oDocument As Word.Document
    Dim isDocument As Word.Document
   
    &#039;Получаем доступ к запущенной программе Word.
    Set oWord = GetObject(Class:=&quot;Word.Application&quot;)
    
    &#039;Даём документу Word имя &quot;oDocument&quot;, через которое
    &#039;будем к нему обращаться в коде. Это нужно
    &#039;для удобства написания кода.
   
    Set isDocument = oWord.Documents(oWord.ActiveDocument.Name)
    Set oDocument = oWord.Documents.Add
    &#039;oDocument.Sections
    &#039;Documents.Add Template:=&quot;Normal&quot;, NewTemplate:=False, DocumentType:=0
    oDocument.Content.PasteAndFormat (wdFormatPlainText)
    oDocument.Range.WholeStory
    oDocument.Range.Find.ClearFormatting
    oDocument.Range.Find.Replacement.ClearFormatting
    With oDocument.Range.Find
        .Text = &quot;^p&quot;
        .Replacement.Text = &quot;; &quot;
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    oDocument.Range.Find.Execute Replace:=wdReplaceAll
    oDocument.Range.WholeStory
    oDocument.Range.Cut
   &#039; ActiveWindow.Close wdDoNotSaveChanges
 
    isDocument.Content.PasteAndFormat (wdUseDestinationStylesRecovery)
    oDocument.Close wdDoNotSaveChanges
End Sub
</code></pre></div><p>побывал&nbsp; &nbsp;Range и&nbsp; Content , и как потом попасть в тоже место где был курсор в первом документе, вставляет в замен всего текста в первый документ.</p>]]></description>
			<author><![CDATA[null@example.com (Alexs37)]]></author>
			<pubDate>Thu, 05 Nov 2015 15:10:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=98687#p98687</guid>
		</item>
	</channel>
</rss>
