Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Программный доступ к проекту 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.036 c
2-1175509401
bagos
2007-04-02 14:23
2007.04.29
Plugins


2-1176353386
Novice
2007-04-12 08:49
2007.04.29
Доступ к файловой системе


2-1176116047
Steep
2007-04-09 14:54
2007.04.29
Че-то совсем туплю..


6-1162307721
BFG9k
2006-10-31 18:15
2007.04.29
При работе с idHTTPServer нет реакции на события JavaScript


15-1175757696
Yanis
2007-04-05 11:21
2007.04.29
Что за чудо?