Имя: Пароль:
1C
1С v8
Получить таблицу из Word
0 stray
 
22.05.12
14:46
Подскажите! Как Получить таблицу Excel-таблицу из Wordа?
Т.е. есть документ word, в него вставлена таблица excel - не могу до нее жобраться.
1 stray
 
22.05.12
14:58
Up
2 aleks-id
 
22.05.12
15:00
яйцо в утке, утка в зайце, заяц в шоке?
3 Hostess_
of_Love
 
22.05.12
15:01
зачем такие извращения?
4 stray
 
22.05.12
15:02
док не я придумывал))
работают уже так
5 Hostess_
of_Love
 
22.05.12
15:04
снеси ворд и скажи что теперь работать будут только в экселе.
6 stray
 
22.05.12
15:07
Word.Documents.Tables не пройдет, не те таблицы
7 Hostess_
of_Love
 
22.05.12
15:11
(6)так они ж делают эти таблицы в экселе, они их не сохраняют?
8 stray
 
22.05.12
15:22
Hostess_of_Love- треп великое дело, но желательно по теме :)
есть что-нибудь?
9 stray
 
22.05.12
16:16
гуру - Up
10 ГАГАТУН
 
22.05.12
16:18
(0) на каждой строчке таблицы создай закладку и перебирай их в цикле из 1С
11 aleks-id
 
22.05.12
16:42
(9) чо ап то? запускай запись макроса, потыкай в эту таблицу, измени любую ячейку и посмотри как макрос к ней обращается
12 manyak
 
22.05.12
17:42
запись макроса не создаст код при работе таким типом диаграмм (встроенным экс. диаграммам в ворде). кури коллекцию InlineShapes документа
13 manyak
 
22.05.12
17:50
только эта фича доступна начиная с SP2 2007 офиса вроде, до этих версий ПРОГАММНЫЙ доступ к chart есть только в экселе.
14 manyak
 
22.05.12
17:51
программный :)
а вот твоя табличка датасурс:

ActiveDocument.InlineShapes.Item(1).Chart.ChartData.Activate
15 stray
 
22.05.12
18:19
отходил, про таблы писал выше - не проходит, макрос не запускается на этой таблице manyak - прав, все это испробовано )) поэтому я здесь, считай 1 раз)
16 manyak
 
22.05.12
18:27
(14) код робит?
17 stray
 
22.05.12
18:27
нет, на Chart - ошибка чтения (((
18 manyak
 
22.05.12
18:31
какой офис? если до 2007 sp2 то не выдет
19 stray
 
22.05.12
18:32
2010
20 stray
 
22.05.12
18:33
но на фирме, наверное, меньше, формат файла doc
21 manyak
 
22.05.12
18:33
должен робить
22 manyak
 
22.05.12
18:35
если doc - то точно 2003 или старее, т.е. на машине где запускать обязательно должен быть офис 2007 sp2 или новее
23 manyak
 
22.05.12
18:35
у тебя и в 2010 не робит получается?
24 stray
 
22.05.12
18:37
да, обгуглился уже за сегодня (
25 manyak
 
22.05.12
18:39
Должен робить 100%
26 manyak
 
22.05.12
18:42
проверяй терь тогда свойство у item'а что есть диаграмма/график там ведь и другое может быть:


If ActiveDocument.InlineShapes.Item(1).HasChart Then
   ActiveDocument.InlineShapes.Item(1).Chart.ChartData.Activate
End If


может ты не с тем item-ом работаешь. ты проверяешь работу в VBA или уже в 1С через COm обьект?
27 stray
 
22.05.12
18:44
в 1С COM/
Ошибка при получении значения атрибута контекста (Chart)
   воттактоженикак = Word.ActiveDocument.InlineShapes.Item(1).Chart.ChartData.Activate;
28 manyak
 
22.05.12
18:46
проверь сначала в VBA - робит?
ну и код этот - просто отрывает и показывает эксель табличку с данными  для диаграммы. те просто увидеть надо или поменять/выдернуть данные для заноса в 1С?
29 stray
 
22.05.12
18:47
просто увидеть и выдернуть данные для заноса в 1С
30 manyak
 
22.05.12
18:50
позжа буду - продолжим, дети на улицу зовут :)
31 manyak
 
22.05.12
20:49
wrd=новый COMОбъект("word.Application");
wrd.visible=1;
wrd.Documents.Open ("C:\mail\г.doc");
wrd.ActiveDocument.InlineShapes.Item(1).Chart.ChartData.Activate();

у меня все работает, табличка с данными открывается
32 stray
 
22.05.12
22:35
v8.2?
33 stray
 
22.05.12
22:36
док точно из 2003 офиса
34 stray
 
22.05.12
22:42
открывается файл или табличка в файле??
где она должна открыться?
35 stray
 
22.05.12
22:43
как ты читаешь данные из этой таблички?
36 manyak
 
23.05.12
07:49
до считывания данных еще не докопал, но программно 8.2.15.289 - она визуально открывается. даже если и файл 2003 - все робит, главное открывать его в новых офисах. программно получается тоже самое что сам интерактивно: выбрать поле диаграммы в вордовском файле, появиться раздел "Работа с диаграммами" на верху ленты и будет закладка "конструктор" в которой есть кнопка "Изменить данные" по нажатию на нее загрузиться эксель и видно табличку с исх. данными для диаграммы.
37 manyak
 
23.05.12
09:36
в 8.1.13.41 тож все работает
38 manyak
 
23.05.12
09:37
данные можно прочитать из SeriesCollection
39 stray
 
23.05.12
11:31
да, сам файл doc с табличкой у меня открывается, пару раз щелкаешь на табличку - открывается и табличка, я не могу найти как программно вытащить данные из этой таблички??
40 manyak
 
23.05.12
11:38
я ж написал - данные в SeriesCollection
41 manyak
 
23.05.12
11:38
лови :)

wrd=новый COMОбъект("word.Application");
wrd.visible=1;
wrd.Documents.Open ("C:\mail\г.doc");
my_values=новый comsafearray(wrd.ActiveDocument.InlineShapes.Item(1).Chart.SeriesCollection(1).Values);
my_values=my_values.Выгрузить();
для z=0 по my_values.количество()-1 цикл
       сообщить (my_values[z]);
конеццикла;
42 stray
 
23.05.12
11:41
хз, не идет у меня
Ошибка при получении значения атрибута контекста (Chart): Произошла исключительная ситуация (0x80004001)
   my_values = новый comsafearray(Word.ActiveDocument.InlineShapes.Item(1).Chart.SeriesCollection(1).Values);
по причине:
Произошла исключительная ситуация (0x80004001)
43 stray
 
23.05.12
11:42
может что установить надо
44 stray
 
23.05.12
11:43
ес. не лень, попробуй на моем файле
http://files.mail.ru/TBI5XO
45 manyak
 
23.05.12
11:45
я не то совсем делал - сори, сча разберемся,у мну не так
46 big
 
23.05.12
11:48
зовите Абрахамса, он наставить вас на верный путь
47 stray
 
23.05.12
11:51
зовем! )
48 manyak
 
23.05.12
12:23
VBA

ActiveDocument.InlineShapes.Item(1).OLEFormat.Edit
Set xls = GetObject(, "Excel.Application")
MsgBox xls.Workbooks(1).Worksheets(1).Cells(4, 2).Text
49 manyak
 
23.05.12
12:24
теперь как то надо получить экземляр запушенного экселя в ворде
50 manyak
 
23.05.12
12:30

wrd=новый COMОбъект("word.Application");
wrd.visible=1;
wrd.Documents.Open ("C:\mail\график.doc");
wrd.ActiveDocument.InlineShapes.Item(1).OLEFormat.Edit();
51 manyak
 
23.05.12
12:41
вот лови, вроде робит, проверь:

wrd=новый COMОбъект("word.Application");
wrd.visible=1;
wrd.Documents.Open ("C:\mail\график.doc");
wrd.ActiveDocument.InlineShapes.Item(1).OLEFormat.Edit();
xls= ПолучитьCOMОбъект(, "excel.Application");
сообщить (xls.Workbooks(1).Worksheets(1).Cells(4, 1).value);
52 stray
 
23.05.12
21:32
manyak !!!
супер!
спасибо! с меня причитается )

заразы полосатые инет отрубили.
53 smaharbA
 
23.05.12
21:34
в (14) бредятина
54 smaharbA
 
23.05.12
21:34
в (51) куйня несусветная
55 smaharbA
 
23.05.12
21:35
(52) дурачек ты
56 manyak
 
23.05.12
22:12
(52) в (14) да согласен, так как думал у него интегрированный график экселевский Chart  - бегло прочитал топик :) смотри (45), ну а (51) рабочий код - не звезди
57 smaharbA
 
23.05.12
22:15
могу звездеть сколь попало, ибо так (51) нельзя
58 smaharbA
 
23.05.12
22:15
+ рабочий - до поры
59 manyak
 
23.05.12
22:16
чисто в плане знаний - растолкуй в чем плохо (51)? я сам 1С как хобби чисто
60 manyak
 
23.05.12
22:17
так то понятно в иделе activeworkbook и activesheet юзать
61 smaharbA
 
23.05.12
22:19
wrd=новый COMОбъект("word.Application");
wrd.visible=1;
док=wrd.Documents.Open ("C:\mail\график.doc");
Шейпы=док.InlineShapes;
Шейпы.Item(1).OLEFormat.Edit();
//далее не адекватно, ибо гетобъектов может оказаться масса, а не только тот что тут создан
xls= ПолучитьCOMОбъект(, "excel.Application");
сообщить (xls.Workbooks(1).Worksheets(1).Cells(4, 1).value)
62 smaharbA
 
23.05.12
22:20
activeworkbook и activesheet - нельзя пользовать никогда (несколько категорично, но сермяжно)
63 manyak
 
23.05.12
22:22
согласен, эт частный случай, WdInlineShapeType проверять надо у item'а
64 manyak
 
23.05.12
22:22
но ни как не  "куйня несусветная" :))))
65 smaharbA
 
23.05.12
22:26
(64) ну уж тут не попишешь, актв - не имеет на право существовать
(конечно, несколько безапеляционно, но лучче так, чем потом - почему)
66 stray
 
24.05.12
08:51
для полного счатья, еще бы данные вытянуть из таблички, не кривые
67 manyak
 
24.05.12
08:53
всмысле кривые?
68 manyak
 
24.05.12
08:53
типа на экране одно, а выводить другое? :)
69 manyak
 
24.05.12
08:56
у тебя ж там в экселе два листа:

Worksheets(1) - "Брошиус"
Worksheets(2) - "Стокота 1176, 1177, 1178"

у тебя активен второй, нужно писать Worksheets(2) :)
70 manyak
 
24.05.12
08:59
Cells(4, 1).value - значение
Cells(4, 1).text - выводит так же как на экране
71 stray
 
24.05.12
09:01
я понял, уже поправил)
72 stray
 
24.05.12
09:02
спасибо!