Форум: "Прочее";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизПрограммный доступ к проекту Visual Basic не является доверенным Найти похожие ветки
← →
Vlad Oshin © (2007-04-04 12:17) [0]Как обойти?
пишу
try
Excel := CreateOleObject("Excel.Application");
Excel.WorkBooks.Open("C:\Rpt20061.xls");
Excel.VBE.ActiveVBProject.VBComponents.Import("C:\Module12.bas"); //Тут, как уже понятно, ошибка
Excel.Application.Run("Macro4",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
Читаем инет:
В Tools\Macro\Security есть опция Trust access to VB project.
Вот е надо включить.
Ставим, Закрываем excel. Открываем, проверяем, стоит. Закрываем.
Запускаем программу. Однофигственно.
Читаем инет:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\10.0\Excel\Security]
"AccessVBOM"=dword:00000001
Стоит, Закрываем regedit. Открываем, проверяем, стоит. Закрываем.
Запускаем программу. Однофигственно.
Читаем инет:
Макрос - безопасность - низкая
Ставим, Закрываем excel. Открываем, проверяем, стоит. Закрываем.
Запускаем программу. Однофигственно.
Идем на ww.delphimaster.ru, спрашиваем:
Помогите, люди добрые, кто чем может, сами мы не местные...
← →
Vlad Oshin © (2007-04-04 12:26) [1]Макрос - безопасность - низкая/ средняя/ высокая
Тоже самое..
← →
Vlad Oshin © (2007-04-04 15:40) [2]А если писать на VBA макрос, то дает этот самый доступ
другой макрос импортируется, автозапускается
т.е. все доверенно получается
что же делать? как заставить из delphi это делать
← →
umbra © (2007-04-04 15:58) [3]а если в книге заранее сделать макрос-импортер, а из делфи вызывать этот макрос, передавая ему имя файла, который надо импортировать?
← →
Паша 1 (2007-04-04 15:59) [4]попробуй так:
Excel.DisplayAlerts:= False;
таким макаром ты говоришь ехелю, шоб он не задавал дурацких вопросов. правда, насчет макроса - не знаю, остальные вопросы не задает. типа, сохранять ли измененный файл, например.
← →
umbra © (2007-04-04 16:04) [5]
> Excel.DisplayAlerts:= False;
на настройки безопасности это не влияет
← →
Паша 1 (2007-04-04 16:40) [6]
> это не влияе
разве я где-то сказал, шо оно влияет? но вполне возможно, шо ехель тогда будет их просто игнорировать. или не будет
← →
Vlad Oshin © (2007-04-04 16:42) [7]
> umbra © (04.04.07 15:58) [3]
> а если в книге заранее сделать макрос-импортер, а из делфи
> вызывать этот макрос, передавая ему имя файла, который надо
> импортировать?
так, значит, придется вставлять в книгу другой макрос. Программно. Иначе - какой смысл? Можно сразу вставить нужный.
> > Excel.DisplayAlerts:= False;
> на настройки безопасности это не влияет
угу, но на всякий случай - не работает.
← →
umbra © (2007-04-04 16:50) [8]
>
> так, значит, придется вставлять в книгу другой макрос. Программно.
> Иначе - какой смысл? Можно сразу вставить нужный.
нет, можно сделать файл-образец с макросом-импортером. Затем, создавать новые книги, беря за шаблон этот файл (Workbooks.Add(образец.xls)
). В новых файлах этот макрос уже будет. А потом его вызывать из делфи (Application.Run("importer", "c:\module.bas")
). Минус в том, что файл-образец должен быть всегда.
Но проблема с сообщением "Программный доступ к проекту Visual Basic не является доверенным" программно, похоже, не решается. Документированным способом, по крайней мере. Недокументированного я не знаю. :)
Еще вариант - ниписать AddIn для экселя.
← →
Vlad Oshin © (2007-04-04 16:58) [9]
> > а если в книге заранее сделать макрос-импортер, а из делфи
>
> > вызывать этот макрос, передавая ему имя файла, который
> надо
> > импортировать?
а если так:
Создать книгу, обозвать Макросной, положить туда макрос. Сразу нужный.
Программно:
1. Открыть книгу Макросную, открыть книгу над которой надо поработать.
2. Выполнить макрос из Макросной книги, но в отношении другой.
(как сам эксель может делать - переходим в нужную книгу, выбираем макрос из другой книги, выполняем)
Тогда вопрос:
А как это сделать? Выполнить макрос из книги, применительно к другой книге?
Следующее выполняет макрос в той же книге, где он и сидит.
Excel2 := CreateOleObject("Excel.Application");
Excel2.WorkBooks.Open("C:\BookMacro.xls");
Excel := CreateOleObject("Excel.Application");
Excel.WorkBooks.Open("C:\Rpt20061.xls");
Excel2.Application.Run("Macro4",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
Пробовал так:
Excel.Application.Run("BookMacro.xls!Macro4",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
ругается, что макрос не найден
← →
Vlad Oshin © (2007-04-04 16:59) [10]
> umbra © (04.04.07 16:50) [8]
упс.. долго писал
сейчас почитаю-попробую
← →
umbra © (2007-04-04 17:05) [11]
> Выполнить макрос из книги, применительно к другой книге?
передавать макросу книгу в качестве параметра. И хранить можно не в отдельной книге, а в "Личной книге макросов", тогда он будет всегда доступен.
← →
Vlad Oshin © (2007-04-04 17:15) [12]
> umbra © (04.04.07 17:05) [11]
спасибо, заработало вот так:
Excel := CreateOleObject("Excel.Application");
Excel.WorkBooks.Open("C:\BookMacro.xls");
Excel.WorkBooks.Add("C:\Rpt20061.xls");
Excel.Application.Run("Hurghada2_3.xls!Macro4",
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
мне этого достаточно :)
спасибо
всем спасибо.
← →
Vlad Oshin © (2007-04-04 17:18) [13]только хотел вопрос про сбивающееся форматирование дозадать :)
> Excel.Application.Run("Hurghada2_3.xls!Macro4",
"C:\BookMacro
а это не тот макрос работал :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c