Главная страница
    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.044 c
15-1175605808
infom
2007-04-03 17:10
2007.04.29
Шрифт кода в программировании


15-1175778255
Ega23
2007-04-05 17:04
2007.04.29
Правила сортировки строк


15-1175480857
Slider007
2007-04-02 06:27
2007.04.29
С днем рождения ! 1 апреля


15-1175512484
Kot Andrei
2007-04-02 15:14
2007.04.29
MSDN offline


2-1176286850
hover
2007-04-11 14:20
2007.04.29
ListBox и кнопка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский