Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.043 c
3-1170946102
umbra
2007-02-08 17:48
2007.04.29
Ошибка БДЕ "Could not find language driver"


15-1175714119
Real
2007-04-04 23:15
2007.04.29
Мона Лиза - в MSPAINT.EXE за 2,5 часа


15-1175512984
OlegMV
2007-04-02 15:23
2007.04.29
FTP клиент


2-1175775557
leonidus
2007-04-05 16:19
2007.04.29
Глюки с отображением формы


2-1176042241
ppcumax
2007-04-08 18:24
2007.04.29
Как избежать тормзов при IdHTTP1.get()?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский