Выполнение макросов EXCEL

Программирование на Visual Basic for Applications
Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Выполнение макросов EXCEL

Сообщение Alec » 15.10.2008 (Ср) 16:53

Здравствуйте, уважаемые братья по расширению функциональности продуктов MS$! :)
Гложет такой вопрос (VB6, Office XP):

Есть таблица в EXCEL, в ней макрос, который запускается через Workbook_Open. Естесственно, если включена безопасность макросов, то при открытии книги или ничего не запускается, или пользователь напрягается необходимостью разрешения макросов с устрашающий надписью про вирусы :) .
Если же открывать эту книгу через программу на VB6 (опускаю некоторые строки):
Код: Выделить всё
Dim XLSAPP as EXCEL.Application
....
   XLSAPP.Workbooks.Open "Primer.xls"
....

то макрос выполняется!
Вопрос как раз в том, могу ли я уверенно использовать эту фичу, надеясь, что у какого либо конечного пользователя в итоге не возникло набора настроек (обстоятельств, настроений, магнитных бурь и т.п.) и все не прекратилось выполняться?
Иногда лучше вовремя остановиться...
И начать заново!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Re: Выполнение макросов EXCEL

Сообщение KL » 22.10.2008 (Ср) 0:16

Тот же эффект достигается программным открытием твоей книги из другой книги, например:

Код: Выделить всё
Sub test()
    Workbooks.Open "C:\Users\KL\Desktop\Book1.xls"
End Sub


где файл C:\Users\KL\Desktop\Book1.xls содержит код привязанный к событию Workbook_Open
Привет,
KL

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Выполнение макросов EXCEL

Сообщение iGrok » 22.10.2008 (Ср) 0:33

KL писал(а):Тот же эффект достигается программным открытием твоей книги из другой книги, например:

Код: Выделить всё
Sub test()
    Workbooks.Open "C:\Users\KL\Desktop\Book1.xls"
End Sub


где файл C:\Users\KL\Desktop\Book1.xls содержит код привязанный к событию Workbook_Open

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

Вопрос-то не в том стоял..
label:
cli
jmp label

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Выполнение макросов EXCEL

Сообщение Alec » 23.10.2008 (Чт) 14:40

KL, iGrok прав, вопрос стоял в том, что можно ли использовать выполнение макросов таким образом в дальнейшем, не боясь облома.
А макросы выполняются любые, кстати, не только события (в VBE не лез, потому не знаю, но скорее всего выполняться не будет).
Иногда лучше вовремя остановиться...
И начать заново!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Re: Выполнение макросов EXCEL

Сообщение KL » 23.10.2008 (Чт) 15:19

iGrok писал(а):Но для открытия его через книгу, для неё тоже должны быть разрешены макросы. => см. второй абзац первого поста.
Вопрос-то не в том стоял..

Насколько я понял, проблема состояла в том, что если пользователь по какой-то причине не включал макросы, то файл события не выполнял и, соответственно, представал перед юзером в неком незаконченом/незащищенном виде. Суть файла "switshboard" как раз в том, что если не включить макросы, то главный файл не открывается. К этому можно еще добавить, что существуют такие вещи как Надстройки и Сертификаты безопасности, после установки которых перестают задаваться вопросы о макросах. В конечном счете VB6 тоже не без разрешения запускается, его же кто-то устанавливал.
По конкретному вопросу, думаю, что в случае если уровень безопасности макросов у пользователя установлен как высокий, то возможны проблемы.
Привет,
KL

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Выполнение макросов EXCEL

Сообщение iGrok » 23.10.2008 (Чт) 18:28

KL, не совсем так. Вопрос именно в том, что нужно каким-то образом гарантировать работоспособность макросов.
Т.е. не защитить код, лежащий в файле, а именно открыть файл так, чтобы макросы обязательно работали, без пугающих запросов, и т.п.

UPD: Всё. Увидел последнее предложение.)
label:
cli
jmp label

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Выполнение макросов EXCEL

Сообщение Alec » 23.10.2008 (Чт) 18:59

KL писал(а):По конкретному вопросу, думаю, что в случае если уровень безопасности макросов у пользователя установлен как высокий, то возможны проблемы.

Вот и я так думаю, но хочу убедиться в обратном
:D
Иногда лучше вовремя остановиться...
И начать заново!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Re: Выполнение макросов EXCEL

Сообщение KL » 23.10.2008 (Чт) 20:19

Alec писал(а):
KL писал(а):По конкретному вопросу, думаю, что в случае если уровень безопасности макросов у пользователя установлен как высокий, то возможны проблемы.

Вот и я так думаю, но хочу убедиться в обратном
:D

Дык нет ничего проще - у себя в Excel меню Сервис -> Макросы -> Безопасность... уровень Высокий, и запускай свой код
Привет,
KL

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Выполнение макросов EXCEL

Сообщение Alec » 23.10.2008 (Чт) 20:41

Приходится цитировать себя:
Alec писал(а):...если включена безопасность макросов, то при открытии книги или ничего не запускается, или пользователь напрягается необходимостью разрешения макросов с устрашающий надписью про вирусы .
Если же открывать эту книгу через программу на VB6 ...
то макрос выполняется!

В том то все и дело, что пробовал, и все работает - макрос запускается и при максимальном уровне безопасности! И хотел узнать будет ли это работать у всех, а не только у меня.
Но раз пошли дискуссии, то думаю, что с обломом в таком случае никто не встречался. Будем проверять и накапливать статистику :D .
Посему считаю тему закрытой (не нашел, что нажать).
Иногда лучше вовремя остановиться...
И начать заново!


Вернуться в VBA

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

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

    TopList