Как из Word добраться до еще не сохраненного листа Excel?

Программирование на Visual Basic for Applications
Oldchat
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.06.2005 (Вт) 19:32
Откуда: RF

Как из Word добраться до еще не сохраненного листа Excel?

Сообщение Oldchat » 01.07.2005 (Пт) 16:09

Все способы работы из Word описаны для листа Excel, уже сохраненного в файле. Причем как в случае, если их (Excel и/или лист) еще только предстоит запустить или они уже запущены.

А если лист еще не сохранен, только в оперативной памяти? Возможно ли это аналогично? Конкретно, через что пытаться, если это вообще тот путь:

Set myXL = GetObject("", "Excel.sheet")
или
Set myXL = GetObject(, "Excel.application")

и что дальше?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.07.2005 (Пт) 16:34

Это вообще тот путь...
А дальше myXL.workbooks(1).worksheets(1)...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Oldchat
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.06.2005 (Вт) 19:32
Откуда: RF

Вот что значат НАДЕЖНЫЕ знания...

Сообщение Oldchat » 01.07.2005 (Пт) 22:08

Многие привыкли считать, что знать все невозможно, и поэтому делают вывод о подсказке как основном инструменте в работе будь то технический справочник или энциклопедия или help'ы.

Однако вот блестящий пример того, как можно резко сузить диапазон поиска, если иметь надежные знания, когда уже можно пользоваться подсказками. В моем случае слишком неконкретные познания резко расширили область экспериментирования, и я прошел мимо результата или не смог оценить его, если достигал. Как финал - нерешенная самостоятельно задача.

Поэтому особое спасибо и автору ответа, и всему этому форуму: справочник ведь не способен понять, что там себе думает очередной заруливший не туда. А спец, как и учитель,- тот, кто способен с высоты своих познаний ПОНЯТЬ.

Итак, все проходит. Выдаем в тексте макроса Word

Set myXL = GetObject(, "Excel.application")

и после выполнения этой строки по F8 можем в Immediate (Ctrl+G) узнать содержимое первого в седьмой строке элемента:

?myXL.workbooks(1).worksheets(1).cells(7,1).value
7

что и было там предварительно записано.

Еще раз спасибо! И два слова для прокола: почти полное отсутствие на сайте дурачеств, нетехнических жаргонизмов, безграмотности производит очень хорошее впечатление о сайте, уровне его поддержки и круге корреспондентов!

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 04.07.2005 (Пн) 15:36

Это указатель на Excel.application, после этого переменная myXL обладает свойствами объекта application из ExcelSet myXL = GetObject(, "Excel.application")

и после выполнения этой строки по F8 можем в Immediate (Ctrl+G) узнать содержимое первого в седьмой строке элемента:

?myXL.workbooks(1).worksheets(1).cells(7,1).value

S=myXL.workbooks(1).worksheets(1).cells(7,1).value
В S заносится содержимое 1 ячейки, в седьмой строке, 1 листа, первой загруженной в ексель книги, а что тут непонятного? :wink:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.07.2005 (Пн) 15:38

Непонятно тут то, зачем расценивать благодарственное самообъяснение человека как вопрос...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 04.07.2005 (Пн) 16:01

Непонятно тут то, зачем расценивать благодарственное самообъяснение человека как вопрос...

Я не понял, что это было самообъяснение, мне показалось, что человек хотел спросить: Я правильно думаю.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.07.2005 (Пн) 16:59

Нет. Человек привёл синтаксис quick evaluation из Ctrl+G.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Oldchat
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.06.2005 (Вт) 19:32
Откуда: RF

Сообщение Oldchat » 07.07.2005 (Чт) 0:51

Ребята, никакой "крутости"!

Все совершенно верно, что полный экстаз (кеф) от решения! Спасибо еще раз!

Дело все в том, что мы все "учились как-нибудь и кое-как", однако мы живем в счастливой стране, где каждый - кум (а то и брат!) королю. Это никогда не опустит Россию, да простите меня за столь высокопарные слова.

Теперь по сути. Когда все идет, то и - хорошо. Но логика-то должна быть? В случае загруженного Excel модуля я не уточнял КТО его загрузил! Может он левый какой? Он и есть левый: грузится из Word по autoopen ! Да откуда!.. Он помещен в КОЛОНТИТУЛЫ (как embedded, да еще в виде значка минимального размера!), обновляет (спросясь) связи и ... работает.

То есть объект НИГДЕ и из НИОТКУДА. Прям, как Господь бог, который со времен Дария III таким и должен быть (по Геродоту приехал воевода этого Дария и попросил показать египетского бога, которым был бычок, выхватил меч и пропорол ему брюхо, после чего спросил: и где теперь ваш бог? после чего все религии знают, что бог должен быть ВЕЗДЕ и НИГДЕ, ВСЕГДА и НИКОГДА, неуничтожим, одним словом).

Ничего элементарного в этой задаче не вижу: работаю на VB (так он тогда назывался) с 95 года (3.0, Excel 5.0). Хочу отметить самоотверженность мастера: ведь на самом деле все, созданное человеком, предсказать нельзя, а он - в точку! И первым! А что еще ценится?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 88

    TopList