проинициализовать _VBProjectPtr
От: Erik_Kartman  
Дата: 16.06.07 20:22
Оценка:
using namespace Excel;     

     CoInitialize( NULL );       
      VBIDE::_VBProjectPtr pVBprj;
      try
      {
         _ApplicationPtr pExcel("Excel.Application");
          pExcel->PutVisible( -1, true );
          _WorkbookPtr pBook  = pExcel->Workbooks->Add();
          // iieo?aai ia?aue eeno (a VBA ioia?aoey n aaeieou)
          _WorksheetPtr sheet = pBook->Worksheets->Item[1L];
 
           pVBprj->VBComponents->Import("Module1.bas");
          pBook->get_VBProject( &pVBprj );     //pVBprj == NULL
     
     //     excel->Visible[0] = true;
     
      }
catch( _com_error &er )
                         {
                              char buf[1024];
                              wsprintf(buf,"_com_error:\n"
                                             "Error\t\t: %08lX\n"
                                             "ErrorMessage\t: %s\n"
                                             "Description\t: %s\n"
                                             "Source\t\t: %s\n",
                                             er.Error(),
                                             (LPCTSTR)_bstr_t(er.ErrorMessage()),
                                             (LPCTSTR)_bstr_t(er.Description()),
                                             (LPCTSTR)_bstr_t(er.Source()));

                              AfxMessageBox(buf );
                         }
CoUninitialize();

вот.. хочю запихнуть макрос в документ эксель. неполучаетса..
pBook->get_VBProject( &pVBprj );
Вот в этой строке pVBprj == NULL.
как проинициализировать _VBProjectPtr, чтоб код работал?
Re: проинициализовать _VBProjectPtr
От: bnk СССР http://unmanagedvisio.com/
Дата: 17.06.07 08:01
Оценка:
Здравствуйте, Erik_Kartman, Вы писали:

E_K>вот.. хочю запихнуть макрос в документ эксель. неполучаетса..

E_K>pBook->get_VBProject( &pVBprj );
E_K>Вот в этой строке pVBprj == NULL.
E_K>как проинициализировать _VBProjectPtr, чтоб код работал?

Скорее у вас проблемы с безопасностью. Из-за того, что по-умолчанию Excel блокирует програмный доступ к VBA проекту. Посмотрите ошибку, которую возвращает get_VBProject. Скорее всего это "Програмный доступ к Visual Basic Project не является доверенным".

Чтобы увидеть ошибку (т.е. чтобы выбрасывалось исключение), не надо использовать pBook->get_VBProject, надо просто pBook->VBProject.

Чтобы работало, нужно в настройках Excel установить галку. Для Excel 2003:
Сервис->Настройки->Безопасность->Безопасность макросов->Надежные издатели->Доверять доступ к Visual Basic Project
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.