Re[3]: Работа с диаграмами в MS Excel
От: retalik www.airbandits.com/
Дата: 14.01.02 07:50
Оценка:
Здравствуйте Cory, Вы писали:

C>Уже читал, спасибо за подсказку. Проблему однако это не решило.

C>Директива #import и все прочее, насколько я понял, в состоянии помочь только в случае с небольшими и несложными объектами. MS Excel для нее сложненький, видимо, потому что в одном только .tlh он мне дает 118 ошибок.
Да нет, #import помогает в львиной доле случаев. (мы все еще о VC говорим? )
Просто при включении надо разрешать конфликты имен.
Вот, я кому-то уже делал компилируемый пример (только файлики .dll и .olb надо в текущий каталог программы перетащить):
#import "mso9.dll" no_namespace rename("DocumentProperties", "DocumentPropertiesXL")   
#import "vbe6ext.olb" no_namespace   
#import "excel9.olb" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces

#pragma warning (disable:4192)

void main()
{
    CoInitialize(NULL); 
    using namespace Excel;
    _ApplicationPtr pXL;
    try 
    {
        pXL.CreateInstance(L"Excel.Application");
        pXL->Visible = VARIANT_TRUE;
        WorkbooksPtr pBooks = pXL->Workbooks;
        _WorkbookPtr pBook  = pBooks->Add((long)xlWorksheet);
        _WorksheetPtr pSheet = pXL->ActiveSheet;
        pSheet->Range["A1:A10"]->Value = 100L;
        pSheet->Range["A11"]->Value = "=SUM(A1:A10)";
    }
    catch(_com_error &e)
    {
        MessageBox(0, e.Source()+" "+e.Description()+" "+e.ErrorMessage(), 
            "Error!", MB_OK);
    }
    CoUninitialize(); 
}

C>А в гиде к ВБ (у меня в MSDN, по крайней мере) информация довольно скудная и все равно остается непонятным как эти интерфейсы с минимальными потерями использовать в VC. Я не хочу ручками прописывать GUIDы и описания интерфейсов . От тако та. Если я в чем-то неправ — вразумите пожалуйста.

Тогда надо читать MSDN->Office developer documentation->Office 2000 documentation->Microsoft Office 2000 Language Reference.
Причем IT дал универсальный совет: чтобы узнать, как что-то сделать программно, надо включить запись макросов и сделать это ручками. А потом макрос в программу на C++ перевести — как два байта переслать
Успехов,
Виталий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.