powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
10 сообщений из 10, страница 1 из 1
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38790225
tom3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К примеру
WA=WScript.CreateObject("Word.Application");
WD1=WA.Documents.Add();
WD=WA.Documents.Open(путь);
WD.Tables(1).Select();
Нужно эту таблицу скопировать в WD1. Искал всюду – не нашел. Прошу подсказки.
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38790322
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понимаю - никак
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38790336
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя в вашем случае можно попробовать не создавать новый файл, а экспортировать выделение в новый файл, кажется где-то была такая возможность
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38790441
tom3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
боюсь это не подойдет - я открываю последовательно 1000 файлов, некоторые таблицы из некоторых файлов нужно копировать в один.
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38790479
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде есть также "вставить из файла". То есть можно в качестве буфера обмена использовать файл.

В этой долбаной ленте 2010-го я не могу ничего найти, а в 2003-м я смогу посмотреть только вечером
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38807740
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКак я понимаю - никак

Вы ошибаетесь. В Word есть (как минимум) два способа вставить диапазон, не затрагивая буфер обмена.

первый - используя 1) Autotext, 2) начиная, как минимум, с версии Word 2003 - используя xml

демонстрационный код м.б. какой-то такой
(до рабочего доведите самостоятельно)

1) автотекст
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Sub insert1_test()

  Dim o_tpl As Template

  Set o_tpl = NormalTemplate 

  Dim doc1 As Document
  Set doc1 = Documents("Документ1")
  
  Dim r_Source As Range
  
  Set r_Source = doc1.Range(15, 155)
  
  Dim o_auE As AutoTextEntry
  
  Set o_auE = o_tpl.AutoTextEntries.Add("mytemp_copy_range", r_Source)
  
  Dim doc2 As Document
  Set doc2 = Documents("Документ2")
  
  Dim r_Dest As Range
  Set r_Dest = doc2.Range(15, 15)
  
  Set r_Dest = o_auE.Insert(r_Dest, True)
  
  o_auE.Delete
  o_tpl.Saved = True
  
End Sub



2) xml

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub insert_test2()
  
  Dim doc1 As Document
  Set doc1 = Documents("Документ1")
    
  Dim r_Source As Range
  
  Set r_Source = doc1.Range(15, 155)
    
  Dim s_xml As String
  
  s_xml = r_Source.XML
    
  Dim doc2 As Document
  Set doc2 = Documents("Документ2")
  
  Dim r_Dest As Range
  Set r_Dest = doc2.Range(15, 15)
  
  r_Dest.InsertXML s_xml
  
End Sub



Оба варианта не затрагивают буфер обмена.

PS
И да, Вы ошибаетесь, считая, что в в Excel метод Range.Copy [Dest] не затрагивает буфер обмена.
К сожалению - затрагивает.
Буфер заполняется содержимым копируемого диапазона независимо от того - указан Dest или нет.
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38807974
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Работает (попробовал первый вариант). Огромное спасибо. Жаль, что тот код уже написан (с порчей буфера), но на будущее буду использовать.
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38980768
tom3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за помощь.
Вот пример моей реализации на js:
var WA=WScript.CreateObject("Word.Application");
var WD=WA.Documents.Open(nameFile);
var WD1=WA.Documents.Add(); //документ для вставки
var oTbl=WD.Tables(1);
oTbl.Select();
WA.NormalTemplate.AutoTextEntries.Add ('item',WA.Selection.Range);
WA.NormalTemplate.AutoTextEntries.Item('item').Insert(WD1.ActiveWindow.Selection.Range,1);
WD1.ActiveWindow.Selection.EndKey(6); // переходим в конец документа
WD1.Content.InsertParagraphAfter(); //добавляем пустую строку
// next table
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38980964
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyБуфер заполняется содержимым копируемого диапазона независимо от того - указан Dest или нетДополню. Если не использовать Dest, то буфер очищается сразу после вставки, не задерживая скопированное в буфере.
...
Рейтинг: 0 / 0
Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
    #38980966
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristЕсли не использовать DestОшибочка: если ИСПОЛЬЗОВАТЬ , то очищается.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в скрипте (например js) сделать копию таблицы Word не используя буфер обмена.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]