|
|
|
| В поле таблицы типа OLE объект хранится EXCEL-евский объект (страница), не связанная с файлом. Возможно, ли работать с этим объектом как с экселевским, не загружая в элемент формы присоединенная рамка объекта? И не сохраняя в файл?
Что-то с первого наскока не обнаружил такого способа.
Что подскажите? | |
|
| |
|
|
|
| >Что подскажите?
сохранять и работать как с файлом | |
|
| |
|
|
|
| Не, я уж лучше скрыто ворму открую.
Так понимаю, других способов нет. | |
|
| |
|
|
|
| Я уже почти согласился на вариант невидимой формы, но одно неприятное обстоятельство, заключающееся в том, что при доступе к экселевскому файлу через рамку объекта выполнить макрос экселя получается только со свойством .Action = acOLEActivate, а это приводит к отображению на экране самого Экселя, перечеркнула весь этот способ и подталкивает к решению на временных экселевских файлах.
Может, кто знает, как выполнить макрос экселя не отображая его на экране?, не хочу я объект сохранять в файл для работы с ним. | |
|
| |
|
|
|
| а что - сохрять как файл и отображать на экране это как-то зависит одно от другого? | |
|
| |
|
|
|
| >а что - сохрять как файл и отображать на экране это как-то
>зависит одно от другого?
У меня есть файл Excel'я, я в нем делаю расчеты платежей.
В нем есть макрос, который следует запустить.
Оператору отображать его не хочу, ни форму, ни эксель.
Файл хранится в базе, в таблице как OLE объект.
- Сначала хотел к ниму обратиться как к объекту в таб. - нет такой возможности.
- Решил обратиться к ниму как объекту в "рамка объекта" на форме, но что бы запустить в нем макрос необходимо свойству .Action присвоить значение acOLEActivate, что приводит к отображению на экране Экселя.
- Хочется избежать сохранения объекта на диск как экселевский файл, что бы все это делать не заметно для оператара. | |
|
| |
|
|
|
| Алексей, а вы можете сделать маленький примерчик, над которым можно "подумать"?
- Хочется избежать сохранения объекта на диск как экселевский файл,
чтобы все это делать не заметно для оператара.
|
А почему сохранение на диск будет заметно? | |
|
| |
|
|
|
| Прошу прощения, не правильно выразил свою мысль.
строку
- Хочется избежать сохранения объекта на диск как экселевский файл,
чтобы все это делать не заметно для оператара.
|
Прошу читать так.
- Хочется все это делать не заметно для оператара, но при этом избежать
сохранения объекта на диск как экселевский файл.
|
| |
|
| |
|
|
|
| OFF
Если есть возможность править свои сообщения, то как удалить лишнее?
:) | |
|
| |
|
|
|
| лучшее, что можешь сделать - переписать расчет средствами Access - пихнуть в модуль и считать в запросе например
вообще не понимаю, с чего ты решил что твоя затея как ты ее излагаешь возможна - как она может быть возможна в принципе? | |
|
| |
|
|
|
| Задача стоит в том, что бы расчет мог настраивать и изменять сам пользователь.
Пускать его в код... Можно сделать отдельный библиотечный файл, так у меня сейчас реализованно, т.к. один и тот же расчет используется в нескольких приложениях (оснавная база, калькулятор для регионов, калькулятор для поставщиков), но не всякий пользователь готов будет вносить изменения в него.
Уже сам запарился вносить в этот библиотечный файл изменения. В экселе куда быстрее.
Бросил ему изначальные параметры, запустил "Подбор параметра", получил результат.
На будущее создаю инструмент: Расчет в экселе с разрешением изменений в экселевском файле, так и без разрешений.
Почему не хочу с сохранением его на диске?
Ну просто...
Да сам не могу объяснить толком :)
Казалось, что есть неосвоенные возможности в способе "через рамку объекта".
Но надежды тают, как снег нынешним мартом. | |
|
| |
|
|
|
| вопрос был в том - почему вы решили что это вообще возможно?
какие такие Properties и Methods вашего OLE объекта вы проинтуитили? откуда они возьмутся и кто (application) мог бы с ними управляться (по вашей задумке)? | |
|
| |
|
|
|
| >вопрос был в том - почему вы решили что это вообще возможно?
По причине отсутствия опыта в применении внедренных и связанных объектов OLE | |
|
| |
|
|
|
|
- Решил обратиться к ниму как объекту в "рамка объекта" на форме,
но что бы запустить в нем макрос необходимо свойству .Action присвоить значение
acOLEActivate, что приводит к отображению на экране Экселя.
|
все-таки я не совсем понимаю.
Допустим, в поле таблицы хранится Excel Workbook (поле xl).
В Workbook в стандартном модуле есть public процедура TestFunc
Я сделал для таблицы форму "frmXL" и открываю ее acHidden.
Sub test()
Dim oXL as Object
DoCmd.OpenForm "frmXL", , , , ,acHidden
Set oXL = Forms!frmXL!xl.Object
oXL.Application.Run "TestFunc"
[...]
End Sub
|
процедура выполняется | |
|
| |
|
38 Кб. |
|
| Вот и я, Сереж, не могу понять, почему у меня не получается.
Прикладываю файл. Если не затруднит, посмотри.
На строке
oXL.Application.Run "IrrAc"
| кричит, не найден макрос ... | |
|
| |
|
|
|
|
DoCmd.OpenForm "frmOle", , , , , acHidden
Set oXL = Forms!frmOle!ctlOle.Object
oXL.Worksheets(1).range("Price") = 100000
oXL.windows(1).Visible = True 'само приложение на экране не появляется
oXL.Application.Run "IrrAc"
DoCmd.Close acForm, "frmOle"
Set oXL = Nothing
|
| |
|
| |
|
|
|
| Сереж, спасибо.
Ты гений. | |
|
| |