Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Доступ к данным word-диаграммы из vba - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Доступ к данным word-диаграммы из vba
DeadMoroz Дата: Воскресенье, 24.05.2015, 15:14 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Здравствуйте. Помогите, пожалуйста, решить такую задачу. Есть файл word с некоторым количеством диаграмм. Связи с источниками разорваны, но если выбрать команду "Редактировать данные" из контекстного меню диаграммы, ексель отображает данные из нее в таблице. Вопрос: как добраться до этих данных с помощью макроса?
 
Ответить
СообщениеЗдравствуйте. Помогите, пожалуйста, решить такую задачу. Есть файл word с некоторым количеством диаграмм. Связи с источниками разорваны, но если выбрать команду "Редактировать данные" из контекстного меню диаграммы, ексель отображает данные из нее в таблице. Вопрос: как добраться до этих данных с помощью макроса?

Автор - DeadMoroz
Дата добавления - 24.05.2015 в 15:14
Manyasha Дата: Воскресенье, 24.05.2015, 15:24 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
DeadMoroz,
Есть файл word

ексель отображает данные

Не поняла где Вам макрос нужен, в ворде или в экселе?
Приложите файл-пример.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеDeadMoroz,
Есть файл word

ексель отображает данные

Не поняла где Вам макрос нужен, в ворде или в экселе?
Приложите файл-пример.

Автор - Manyasha
Дата добавления - 24.05.2015 в 15:24
DeadMoroz Дата: Воскресенье, 24.05.2015, 15:40 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Manyasha,
в принципе, я перебираю вордовские файлы из екселя.
[vba]
Код
Set obj = CreateObject("Word.Application")
With obj
.documents.Open (folderPath & fName)
...
[/vba]

Насчет связанного файла может слегка приврал - сейчас попробовал сделать с нуля диаграмму в екселе, скопировал ее в ворд, ексель удалил. "Изменить данные" в ворде больше не работает.
В приложении кусок реального файла, с редактируемой диаграммой.
К сообщению приложен файл: Doc1.docx (19.2 Kb)


Сообщение отредактировал Pelena - Воскресенье, 24.05.2015, 18:38
 
Ответить
СообщениеManyasha,
в принципе, я перебираю вордовские файлы из екселя.
[vba]
Код
Set obj = CreateObject("Word.Application")
With obj
.documents.Open (folderPath & fName)
...
[/vba]

Насчет связанного файла может слегка приврал - сейчас попробовал сделать с нуля диаграмму в екселе, скопировал ее в ворд, ексель удалил. "Изменить данные" в ворде больше не работает.
В приложении кусок реального файла, с редактируемой диаграммой.

Автор - DeadMoroz
Дата добавления - 24.05.2015 в 15:40
KSV Дата: Воскресенье, 24.05.2015, 16:08 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[vba]
Код
Set obj = CreateObject("Word.Application")    
Set WD = obj.documents.Open (folderPath & fName)    
With WD
       ' так можно проверить, является ли объект диаграммой Excel
       'If .InlineShapes(1).OLEFormat.ClassType = "Excel.Chart.8" Then
          
       ' а так, получить доступ к данным
       Set MyRange = .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).UsedRange
          
       ...
End With
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Воскресенье, 24.05.2015, 16:13
 
Ответить
Сообщение[vba]
Код
Set obj = CreateObject("Word.Application")    
Set WD = obj.documents.Open (folderPath & fName)    
With WD
       ' так можно проверить, является ли объект диаграммой Excel
       'If .InlineShapes(1).OLEFormat.ClassType = "Excel.Chart.8" Then
          
       ' а так, получить доступ к данным
       Set MyRange = .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).UsedRange
          
       ...
End With
[/vba]

Автор - KSV
Дата добавления - 24.05.2015 в 16:08
DeadMoroz Дата: Воскресенье, 24.05.2015, 16:35 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
KSV,
сделал такой тест:
[vba]
Код
Set obj = CreateObject("Word.Application")
Set WD = obj.documents.Open(folderPath & fName)
With WD
If .InlineShapes(1).OLEFormat.ClassType = "Excel.Chart.8" Then
Set myRange = .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).UsedRange
Stop
End If
End With
[/vba]

1. Ругается вот здесь: If .InlineShapes(1).OLEFormat.ClassType = "Excel.Chart.8" Then..., говорит, "Object variable or with block variable is not set"
2. Когда насильно протаскиваю дальше, ругается здесь: Set myRange = .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).UsedRange, говорит, "Method Workbook of object ChartData failed"


Сообщение отредактировал Pelena - Воскресенье, 24.05.2015, 18:38
 
Ответить
СообщениеKSV,
сделал такой тест:
[vba]
Код
Set obj = CreateObject("Word.Application")
Set WD = obj.documents.Open(folderPath & fName)
With WD
If .InlineShapes(1).OLEFormat.ClassType = "Excel.Chart.8" Then
Set myRange = .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).UsedRange
Stop
End If
End With
[/vba]

1. Ругается вот здесь: If .InlineShapes(1).OLEFormat.ClassType = "Excel.Chart.8" Then..., говорит, "Object variable or with block variable is not set"
2. Когда насильно протаскиваю дальше, ругается здесь: Set myRange = .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).UsedRange, говорит, "Method Workbook of object ChartData failed"

Автор - DeadMoroz
Дата добавления - 24.05.2015 в 16:35
KSV Дата: Воскресенье, 24.05.2015, 17:55 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
DeadMoroz, оформляйте код тегом #.

1. Ругается вот здесь: If .InlineShapes(1).OLEFormat.ClassType

Проверил. Действительно объект OLEFormat возвращается только в проекте документа Word, а извне не виден...
Ну, в принципе, вам достаточно просто получить объект .InlineShapes(1).Chart
Я его без проблем получаю по предоставленному выше коду, открывая ваш файл-пример. (распакуйте оба файла в одну папку и откройте Книга3.xlsm)
К сообщению приложен файл: KSV_Sample.zip (29.2 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеDeadMoroz, оформляйте код тегом #.

1. Ругается вот здесь: If .InlineShapes(1).OLEFormat.ClassType

Проверил. Действительно объект OLEFormat возвращается только в проекте документа Word, а извне не виден...
Ну, в принципе, вам достаточно просто получить объект .InlineShapes(1).Chart
Я его без проблем получаю по предоставленному выше коду, открывая ваш файл-пример. (распакуйте оба файла в одну папку и откройте Книга3.xlsm)

Автор - KSV
Дата добавления - 24.05.2015 в 17:55
DeadMoroz Дата: Воскресенье, 24.05.2015, 18:22 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
KSV,
простите, что-то не получается никак.
Распаковал все в одну папку, открыл ексель, жму на кнопку. Система выдает "Неопознанную ошибку" с каким-то многозначным номером.
В приведенном выше коде убрал условие. По-прежнему ругается, как в п. 2. Причем, не важно, пытаюсь я зайти через ексель или прямо в ворде.
 
Ответить
СообщениеKSV,
простите, что-то не получается никак.
Распаковал все в одну папку, открыл ексель, жму на кнопку. Система выдает "Неопознанную ошибку" с каким-то многозначным номером.
В приведенном выше коде убрал условие. По-прежнему ругается, как в п. 2. Причем, не важно, пытаюсь я зайти через ексель или прямо в ворде.

Автор - DeadMoroz
Дата добавления - 24.05.2015 в 18:22
KSV Дата: Воскресенье, 24.05.2015, 18:29 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Не видя вашу ошибку, можно строить сколько угодно предположений, но не факт, что "попадешь"...
Если хотите, можете написать мне на почту (внизу, в подписи) УИН и пароль для подключения TeamViewer'ом - я подключусь, посмотрю.
Или сами посмотрите в дебагере, какой именно объект он не может получить...


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеНе видя вашу ошибку, можно строить сколько угодно предположений, но не факт, что "попадешь"...
Если хотите, можете написать мне на почту (внизу, в подписи) УИН и пароль для подключения TeamViewer'ом - я подключусь, посмотрю.
Или сами посмотрите в дебагере, какой именно объект он не может получить...

Автор - KSV
Дата добавления - 24.05.2015 в 18:29
DeadMoroz Дата: Воскресенье, 24.05.2015, 18:50 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
KSV,
сработало, когда я начал обращаться к конкретным ячейкам типа .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).Cells(1, 2).Value
Спасибо за наводку!
 
Ответить
СообщениеKSV,
сработало, когда я начал обращаться к конкретным ячейкам типа .InlineShapes(1).Chart.ChartData.Workbook.Worksheets(1).Cells(1, 2).Value
Спасибо за наводку!

Автор - DeadMoroz
Дата добавления - 24.05.2015 в 18:50
KSV Дата: Воскресенье, 24.05.2015, 18:57 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
рад за вас! :)
пожалуйста!


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениерад за вас! :)
пожалуйста!

Автор - KSV
Дата добавления - 24.05.2015 в 18:57
DeadMoroz Дата: Воскресенье, 24.05.2015, 19:00 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
но есть нюанс:
без вот без этой строчки выкидывает ошибку, по крайней мере, у меня:
[vba]
Код
.InlineShapes(1).Chart.ChartData.Activate
[/vba]

(для протокола, вдруг кому пригодится)


Сообщение отредактировал DeadMoroz - Воскресенье, 24.05.2015, 20:05
 
Ответить
Сообщениено есть нюанс:
без вот без этой строчки выкидывает ошибку, по крайней мере, у меня:
[vba]
Код
.InlineShapes(1).Chart.ChartData.Activate
[/vba]

(для протокола, вдруг кому пригодится)

Автор - DeadMoroz
Дата добавления - 24.05.2015 в 19:00
KSV Дата: Воскресенье, 24.05.2015, 19:08 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
возможно, это особенность версии 2007
(в 2013 - для обращения к свойствам диаграммы, ее не обязательно активировать)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениевозможно, это особенность версии 2007
(в 2013 - для обращения к свойствам диаграммы, ее не обязательно активировать)

Автор - KSV
Дата добавления - 24.05.2015 в 19:08
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!